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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述

發(fā)布時(shí)間:2025/3/21 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 定義

重載運(yùn)算是具有特殊名字的函數(shù),它們的名字由關(guān)鍵字operator和其后要定義的運(yùn)算符號(hào)組成。

2. 運(yùn)算符表

2.1 可重載運(yùn)算符

運(yùn)算符類型運(yùn)算符種類
雙目算術(shù)運(yùn)算符+ (加),-(減),*(乘),/(除),% (取模)
關(guān)系運(yùn)算符==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)
邏輯運(yùn)算符//(邏輯或),&&(邏輯與),!(邏輯非)
單目運(yùn)算符+ (正),-(負(fù)),*(指針),&(取地址)
自增自減運(yùn)算符++(自增),–(自減)
位運(yùn)算符/ (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移)
賦值運(yùn)算符=, +=, -=, *=, /= , % = , &=, /(其實(shí)是豎著的)=, ^=, <<=, >>=
空間申請(qǐng)與釋放new, delete, new[ ] , delete[]
其他運(yùn)算符()(函數(shù)調(diào)用),->(成員訪問(wèn)),,(逗號(hào)),

2.2 不可重載的運(yùn)算符列表

運(yùn)算符含義
.成員訪問(wèn)運(yùn)算符
., ->成員指針訪問(wèn)運(yùn)算符
::域運(yùn)算符
sizeof長(zhǎng)度運(yùn)算符
?:條件運(yùn)算符
#預(yù)處理符號(hào)

3. 重載運(yùn)算符的設(shè)計(jì)規(guī)則

規(guī)則1

  • 不能改變內(nèi)置類型的運(yùn)算符的含義。
  • 只能重載已有的運(yùn)算符,而不能發(fā)明新的運(yùn)算符號(hào)。
  • 重載運(yùn)算符的優(yōu)先級(jí)和結(jié)合律跟對(duì)應(yīng)的內(nèi)置運(yùn)算符保持一致。

規(guī)則2

  • 通常情況下,不應(yīng)該重載逗號(hào),、取地址&、邏輯與&&和邏輯或||運(yùn)算符。
  • 如果類中含有算術(shù)運(yùn)算符或位運(yùn)算符,則最好也提供對(duì)應(yīng)的復(fù)合賦值運(yùn)算符。
  • 如何有==,一般會(huì)有!=
  • 如果有單序比較,則應(yīng)該有operator<,同時(shí)也應(yīng)該有> 和其他的。
  • 邏輯運(yùn)算符返回bool,算術(shù)運(yùn)算符返回類類型,賦值運(yùn)算符和復(fù)合賦值運(yùn)算符返回左側(cè)運(yùn)算對(duì)象的一個(gè)引用

4. 重載運(yùn)算符的參數(shù)

參數(shù)表示運(yùn)算符的運(yùn)算對(duì)象,對(duì)于二元運(yùn)算符來(lái)說(shuō),左側(cè)運(yùn)算對(duì)象傳遞給第一個(gè)參數(shù),右側(cè)運(yùn)算對(duì)象傳遞給第二個(gè)參數(shù)。

eg.

data1 + data2 operator+(data1, data2); data1 += data2; // expression-based ''call'' data1.operator+=(data2); // equivalent call to a member operator function
  • 除了重載的函數(shù)調(diào)用運(yùn)算符operator()之外,其他重載運(yùn)算符不能含有默認(rèn)實(shí)參。
  • 重載運(yùn)算符函數(shù)的參數(shù)數(shù)量和該運(yùn)算符作用的運(yùn)算對(duì)象數(shù)量一樣多。
  • 成員運(yùn)算符函數(shù)的顯式參數(shù)數(shù)量比運(yùn)算對(duì)象的數(shù)量少一個(gè)。

5. 設(shè)計(jì)為成員函數(shù)還是普通函數(shù)

  • 把運(yùn)算符定義為成員函數(shù)時(shí),它的左側(cè)運(yùn)算對(duì)象必須是運(yùn)算符所屬類型的對(duì)象。
  • 如果一個(gè)運(yùn)算符函數(shù)是類的成員函數(shù),則它的第一個(gè)運(yùn)算對(duì)象會(huì)綁定到隱式的this指針上。
string s = "world"; string t = s + "!"; // ok: we can add a const char* to a string string u = "hi" + s; // would be an error if + were a member of string

如何選擇將運(yùn)算符定義為成員函數(shù)還是普通函數(shù):

  • 賦值=、下標(biāo)[]、調(diào)用()和成員訪問(wèn)箭頭->運(yùn)算符必須是成員函數(shù)。
  • 復(fù)合賦值運(yùn)算符一般是成員函數(shù),但并非必須。
  • 改變對(duì)象狀態(tài)或者與給定類型密切相關(guān)的運(yùn)算符,如遞增、遞減、解引用運(yùn)算符,通常是成員函數(shù)。
  • 具有對(duì)稱性的運(yùn)算符可能轉(zhuǎn)換任意一端的運(yùn)算對(duì)象,如算術(shù)、相等性、關(guān)系和位運(yùn)算符,通常是普通函數(shù)。

總結(jié)

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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