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