通常對(duì)類本身的運(yùn)算符重載 如類nameclass的運(yùn)算符函數(shù)名稱operator op 如x,y都是類nameclass的生成的對(duì)象,如果重載并實(shí)現(xiàn)了operator op 我們可以做這樣的計(jì)算x op y,編譯器會(huì)自動(dòng)翻譯成如下x.operator op(y) 如op是重載的運(yùn)算符是加法(+),那么可變成x+y,編譯器會(huì)變成x.operator+(y) 計(jì)算順序是: x op y變成x=x op y,運(yùn)算結(jié)果存入到x, x.operator+(y) 第一個(gè)操作數(shù)是類的對(duì)象x,也就是隱含的對(duì)象指針this, 第二個(gè)操作數(shù)是參數(shù)y,對(duì)象X與的數(shù)據(jù)成員逐個(gè)一一相加, 返回結(jié)果:是計(jì)算完畢后返回到左邊的對(duì)象,它返回的必須是對(duì)象,而不能是其它數(shù)據(jù)類型 .重載下標(biāo)[]取值運(yùn)算符實(shí)例 定義operator[] class foo { private: vector<int> data; public: int& operator[] (const size_t); }; 實(shí)現(xiàn)operator[] int& foo::operator[](const size_t index) { return data[index]; }
|