日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++学习笔记之运算符重载

發布時間:2024/4/15 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++学习笔记之运算符重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、重載運算符

void operator+(....) ? ? ? ?//重載"+"運算符 (1)如果是成員函數形式,那么必須是非static (2)使用運算符必須重載,除了“=”、“&”、“,”這三個可直接使用,也可以重載。 (3)不能重載的運算符“.”、“.*”、“::”、“?:” (4)重載不能改變運算符的優先級,不能改變結合律,不能改變運算符“元數”(操作數) (5)不能創建新運算符 (6)不能改變運算符對基本類型對象操作的含義。重載只能對用戶自定義類型對象或基本類型和用戶自定義類型混合使用

2、相關運算符

如重載加法運算符 obj2 = obj2 + obj1 但是obj2 += obj1不成立,必須重載“+=”運算符才行。

3、成員函數和全局函數

(1)“()”、“[]”、“->”或任何賦值運算符重載,必須聲明為類成員函數。其他運算符則都可以 (2)如果是成員函數,那么左邊操作數(或唯一操作數)必須是該類的對象。否則用全局函數重載,如重載流操作“<<”。 (3)使用全局函數可以使重載的運算符有可交換性,即左右操作數可以交換。 (4)一元運算符可以重載為一個不帶參數的非static成員函數或帶一個參數的全局函數(全局函數的參數必須是該類的對象或引用) (5)二元運算符可以重載為帶一個參數的非static成員函數或帶兩個參數的全局函數(其中一個參數必須是該類的對象或引用)

4、自我賦值

如果出現自我賦值,而operator=未檢測,那么函數會在賦值操作前刪除動態內存,使指針指向已釋放的內存卡,導致運行錯誤

5、類型轉換

c++基本類型可以互相轉換,用戶自定義類和基本類型或用戶自定義類之間則不能。 轉換運算符又稱強制類型轉換運算符: classA::operator classB() const; 當編譯器遇到static_cast<classB>(a)時(a是classA一個對象),會調用上面函數進行轉換。 (1)轉換構造函數:任何單一參數的構造函數都可以看成是轉換構造函數 (2)轉換運算符和轉換構造函數有點事編譯器可以隱式調用。 (3)在重載運算符函數中,這種自定義的類型轉換只能隱式調用一級

6、重載自增自減(++、--)

前置 class &operator++(); 后置 class operator++(int); 后置函數中int參數為0,是一個啞值,僅為了區分前置和后置。 后置自增自減會產生臨時對象,所以盡量使用前置自增自減

7、禁止隱式轉換

左右單參數構造函數都可以用做隱式類型轉換。 但是如果有些這類構造函數不像被當成隱式轉換構造函數,需要聲明成explicit即可。 explicit只能用于聲明單參數構造函數,聲明其他構造函數或成員函數會編譯錯誤

?

總結

以上是生活随笔為你收集整理的c++学习笔记之运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。