賦值(=)、下標()、呼叫(())和成員訪問箭頭(->)等操作符必須定義為成員,將這些操作符定義為非成員函式將在編譯時標記為錯誤。6。操作符->
可以為類型別的物件過載成員訪問操作符箭頭(->),它必須被定義為乙個類的成員函式。
假設我們想定義乙個類型別來代表乙個指向screen類物件的指標,定義如下:
class screenptr ;
screenptr型別的物件的定義必須提供初始值:乙個screen型別的物件,screenptr物件將指向它,否則定義就出錯。
為使screenptr類的行為像內建指標,我們必須在定義一些過載操作符,定義:解引用操作符(*)和成員操作符箭頭(->):
class screenptr
screen* operator->()
例程:class screen
inline screen& end();
inline screen& forward();
inline screen& back();
inline screen& up();
inline screen& down();
char lcfun(int);
private:
string _screen;
string::size_type _cursor;
short _height;
short _width;
inline int row();
};class screenptr
screen *operator->()
screen &operator*()
private:
screen *ptr;
};int main(int argc, char *argv)
screen screen(1,2);
screenptr ptr(&screen);
coutreturn 0;
過載 操作符 c primer
istream operator istream in,sales item s double price in s.isbn s.units sold price check that the inputs succeeded if in s.revenue s.units sold price ...
C primer閱讀之過載運算與型別轉換
第14章 過載運算與型別轉換 1.當乙個過載的運算子時成員函式時,this繫結到左側運算物件,成員運算子函式顯式地參數量比運算物件地數量少乙個。2.我們把運算子定義為成員函式時,它地左側運算物件必須是所屬類地物件。3.具有對稱性的運算子,一般定義為普通的非成員函式。比如算術和關係運算子。4.輸入輸出...
C Primer 學習筆記之關聯容器
關聯容器 關聯容器支援通過鍵來高效地查詢和讀取元素。兩個基本的關聯容器型別是map和set。map的元素以鍵 值對的形式組織 鍵用作元素在map的索引,而值則表示所儲存和讀取的資料。set僅包含乙個鍵,並有效地支援關於某個鍵是否存在的查詢。set和map型別的物件不允許為同乙個鍵新增第二個元素。如果...