程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++:運算符重載

C++:運算符重載

編輯:C++入門知識

   運算符重載是一種形式的C++多態。運算符重載將重載的概念擴展到運算符上,允許賦予C++運算符多種含義。實際上,很多C++運算符已經被重載。eg:將*運算符用於地址,將得到存儲在這個地址中的值,將他用於2個數字時,得到的將是他們的乘積。C++根據操作數的數目和類型來決定采用哪種操作。

  C++允許將運算符重載擴展到用戶定義的類型。例如,允許使用+將兩個對象相加。編譯器將根據操作數的數目和類型決定使用加法定義。運算符重載可以使代碼看起來更自然。例如,將2個數組相加是一種常見的運算。通常,需要使用下面這樣的for循環來實現:

 ( i = ; i < ; i++= sam[i] + janet[i]; 

但在C++中,可以定義一個表示數組的類,並重載+運算符,於是便有這樣的語句:

total = arr1+arr2;

一個計算時間的例子

 mytime.h

  once
   MYTIME_H_
                   Time(     Time( h,     ~Time(      AddMin(      AddHr(      Reset( h,               
     Time Sum( Time &t);
     Time  + (Time &t);
  

 mytime.cpp

 #include 
 #include <iostream>
 #include 
 
 Time::Time(      hours = minutes =   Time::Time( h,      hours =     minutes =  
 Time::~Time(  
  
  Time::AddMin(      minutes +=     hours += minutes/     minutes %=   
  Time::AddHr(      hours +=  
  Time::Reset( h,      hours =     minutes =  
       std::cout<<hours<<<<<<minutes<<<<  
 Time Time::Sum( Time &t)
       sum.minutes = minutes +     sum.hours = hours + t.hours + sum.minutes/     sum.minutes = sum.minutes %        
 Time Time::+(Time &t)
       sum.minutes = minutes +     sum.hours = hours + t.hours + sum.minutes/     sum.minutes = sum.minutes %       }

調用

 #include 
 #include 
 #include <iostream>
 
  _tmain( argc, _TCHAR*      
           
      Time coding(,      Time fixing(,       cout <<       cout <<     cout <<       cout <<     cout <<       cout <<     total =     cout <<       cout <<     total = coding +     cout <<       cout <<        }

執行結果

重點講解

1.sum函數中將參數聲明為引用,可以提高運行效率,節省內存

2.sum函數中,返回值不能是引用。因為sum對象是局部變量,在函數結束時將被刪除,因此引用將指向一個不存在的對象。使用返回類型Time意味著在刪除sum之前構造他的拷貝,調用函數將得到他的拷貝。

參考資料

C++ Primer Plus 第六版(第11章)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved