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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++运算符重载(10)

發(fā)布時間:2025/3/8 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++运算符重载(10) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

編譯器在默認情況下為每個類生成一個默認的賦值操作,用于同類的兩個對象之間相互賦值。默認的含義是逐個為成員賦值,即將一個對象的成員的值賦給另一個對象相應的成員,這種賦值方式對于有些類可能是不正確的。

運算符重載形式有兩種,重載為類的成員函數(shù)和重載為類的友元函數(shù)。

C++的關鍵字“operator”和運算符一起使用就表示一個運算符函數(shù)。例如“operator +”表示重載“+”運算符。

運算符實質(zhì)

C++是由函數(shù)組成的,在C++內(nèi)部,任何運算都是通過函數(shù)來實現(xiàn)的。因為任何運算都是通過函數(shù)來實現(xiàn)的,所以運算符重載其實就是函數(shù)重載,要重載某個運算符,只要重載相應的函數(shù)就可以了。與以往稍有不同的是,需要使用新的關鍵字“operator”,它和C++的一個運算符連用,構成一個運算符函數(shù)名,例如“operator+”.通過這種構成方法就可以像重載普通函數(shù)那樣重載運算符函數(shù)operator+()。由于C++已經(jīng)為各種基本數(shù)據(jù)類型定義了該運算函數(shù),所以只需要為自己定義的類型重載operator+()就可以了。

C++的運算符大部分都可以重載,不能重載的只有. 、:: 、* 和 ?: 。前面三個是因為在C++中都有特定的含義,不準重載以避免不必要的麻煩;“?:”則是因為不值得重載。另外,“sizeof”和“#”不是運算符,因而不能重載,而=、()、[ ] 、->這4個運算符只能用類運算符來重載。

運算符重載實例

格式為

函數(shù)類型 operator 運算符(形參表) { 函數(shù)體; }

?

ostream &operator<<(ostream & output,類名 &對象名) { return output; }

output是類ostream對象的引用,它是cout的別名,即ostream&output=cout。調(diào)用參數(shù)時,output引用cout(即cout的別名)。顯然,插入符函數(shù)的第2個參數(shù)使用引用方式比直接使用對象名的可讀性要好一些

類運算符和友元運算符的區(qū)別

如果運算符所需的操作數(shù)(尤其是第一個操作數(shù))希望進行隱式類型轉換,則運算符應通過友元來重載。另一方面,如果一個運算符的操作需要修改類對象的狀態(tài),則應當使用類運算符,這樣更符合數(shù)據(jù)封裝的要求。但參數(shù)是引用還是對象,則要根據(jù)運算符在使用中可能出現(xiàn)的情況來決定。 ?如果對象作為重載運算符函數(shù)的參數(shù),則可以使用構造函數(shù)將常量轉換成該類型的對象。如果使用引用作為參數(shù),因為這些常量不能作為對象名使用,所以編譯系統(tǒng)就要報錯。

轉載于:https://www.cnblogs.com/aeolian/p/7690484.html

總結

以上是生活随笔為你收集整理的C++运算符重载(10)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。