日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
十分鐘理解C++中的運(yùn)算符重載

 在C ++中,我們可以使運(yùn)算符為用戶定義的類工作。這意味著C ++能夠?yàn)檫\(yùn)算符提供數(shù)據(jù)類型的特殊含義,這種能力稱為運(yùn)算符重載。

公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出鳳翔免費(fèi)做網(wǎng)站回饋大家。

例如,我們可以在String之類的類中重載運(yùn)算符'+',以便僅使用+就可以連接兩個(gè)字符串。 算術(shù)運(yùn)算符可能會(huì)重載的其他示例類是復(fù)數(shù),小數(shù),大整數(shù)等。

一個(gè)簡(jiǎn)單而完整的例子

 
 
 
  1. #include  
  2. using namespace std;  
  3.    
  4. class Complex {  
  5. private:  
  6.     int real, imag;  
  7. public:  
  8.     Complex(int r = 0, int i =0)  {real = r;   imag = i;}  
  9.     Complex operator + (Complex const &obj) {  
  10.          Complex res;  
  11.          res.real = real + obj.real;  
  12.          res.imag = imag + obj.imag;  
  13.          return res;  
  14.     }  
  15.     void print() { cout << real << " + i" << imag << endl; }  
  16. };  
  17.    
  18. int main()  
  19. {  
  20.     Complex c1(10, 5), c2(2, 4);  
  21.     Complex c3 = c1 + c2;  
  22.     c3.print();  
  23. }  

 

操作員功能和普通功能有什么區(qū)別?

操作員功能與普通功能相同。唯一的區(qū)別是,運(yùn)算符的名稱始終是運(yùn)算符關(guān)鍵字,后跟運(yùn)算符的符號(hào),并且在使用相應(yīng)的運(yùn)算符時(shí)會(huì)調(diào)用運(yùn)算符功能。

以下是全局運(yùn)算符功能的示例。

 
 
 
  1. #include  
  2. using namespace std;  
  3.    
  4. class Complex {  
  5. private:  
  6.     int real, imag;  
  7. public:  
  8.     Complex(int r = 0, int i =0)  {real = r;   imag = i;}  
  9.     void print() { cout << real << " + i" << imag << endl; }  
  10.  
  11. friend Complex operator + (Complex const &, Complex const &);  
  12. };  
  13.    
  14.    
  15. Complex operator + (Complex const &c1, Complex const &c2)  
  16. {  
  17.      return Complex(c1.real + c2.real, c1.imag + c2.imag);  
  18. }  
  19.    
  20.    
  21. int main()  
  22. {  
  23.     Complex c1(10, 5), c2(2, 4);  
  24.     Complex c3 = c1 + c2;  
  25.     c3.print();  
  26.     return 0;  
  27. }  

 

我們可以讓所有運(yùn)算符超負(fù)荷嗎?

除了少數(shù)操作員之外,幾乎所有操作員都可以重載。以下是不能重載的運(yùn)算符的列表。

為什么不能。(點(diǎn)),::,?:和sizeof是否過(guò)載?

請(qǐng)參閱此以獲取Stroustrup自己的答案。

關(guān)于運(yùn)算符重載的要點(diǎn)

1)為了使運(yùn)算符重載起作用,至少一個(gè)操作數(shù)必須是用戶定義的類對(duì)象。

2) 賦值運(yùn)算符:編譯器會(huì)自動(dòng)為每個(gè)類創(chuàng)建一個(gè)默認(rèn)的賦值運(yùn)算符。默認(rèn)賦值運(yùn)算符確實(shí)將右側(cè)的所有成員分配到左側(cè),并且在大多數(shù)情況下都可以正常工作(此行為與復(fù)制構(gòu)造函數(shù)相同)。請(qǐng)參閱此了解更多詳情。

3) 轉(zhuǎn)換運(yùn)算符:我們還可以編寫(xiě)可用于將一種類型轉(zhuǎn)換為另一種類型的轉(zhuǎn)換運(yùn)算符。

 
 
 
  1. #include   
  2. using namespace std;  
  3. class Fraction  
  4. {  
  5.     int num, den;  
  6. public:  
  7.     Fraction(int n,  int d) { num = n; den = d; }  
  8.  
  9.     operator float() const {  
  10.         return float(num) / float(den);  
  11.     }  
  12. };  
  13.    
  14. int main() {  
  15.     Fraction f(2, 5);  
  16.     float val = f;  
  17.     cout << val;  
  18.     return 0;  
  19. }  

 

重載的轉(zhuǎn)換運(yùn)算符必須是成員方法。其他運(yùn)算符可以是成員方法或全局方法。

4)任何可以用單個(gè)參數(shù)調(diào)用的構(gòu)造函數(shù)都可以用作轉(zhuǎn)換構(gòu)造函數(shù),這意味著它也可以用于隱式轉(zhuǎn)換為正在構(gòu)造的類。

 
 
 
  1. #include   
  2. using namespace std;  
  3.    
  4. class Point  
  5. {  
  6. private:  
  7.     int x, y;  
  8. public:  
  9.     Point(int i = 0, int j = 0) {  
  10.         x = i;   y = j;  
  11.     }  
  12.     void print() {  
  13.         cout << endl << " x = " << x << ", y = " << y;  
  14.     }  
  15. };  
  16.    
  17. int main() {  
  18.     Point t(20, 20);  
  19.     t.print();  
  20.     t = 30;    
  21.     t.print();  
  22.     return 0;  

新聞標(biāo)題:十分鐘理解C++中的運(yùn)算符重載
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/coihssi.html