C 中為類過載下標操作符(2 2)

2021-10-07 08:41:54 字數 779 閱讀 7774

當定義myclass類的常量物件時

const myclass c_my_class(5);
「2.1 返回值是引用型別」中提到的過載下標操作符的返回值是引用型別,因此當有如下**時不報錯。

int i = c_my_class[0];
其報錯資訊為「error c2678: 二進位制「[」: 沒有找到接受「const myclass」型別的左運算元的運算子(或沒有可接受的轉換)」。此時需要再次過載下標操作符,使其返回型別為const int&。

const int& operator(size_t n) const

也就是說,如果乙個類包含下標運算子,則它通常會定義兩個版本:乙個返回普通引用,另乙個類的常量成員並且返回常量引用。

當容器類要表示二維陣列時,需要將myclass類的成員函式arr宣告為指標的指標。

int** arr;
myclass類的建構函式修改為

myclass(int n, int m)

}

過載的下標操作符的返回值變為int*&,**如下

int*& operator(size_t n)

此時,可以通過以下**訪問二維陣列

myclass my_class(3, 2);

my_class[0][0] = 1;

c 中 操作符過載

操作符過載 1.有先後順序,如 t3 t1 t2 則t1 t2等價於t1.operate t2 2.對 操作符進行過載時,如aa是有本質區別的。操作符過載就是用函式的方法對乙個操作符進行重新定義,在該函式中定義了操作符所要完成的功能。其中cout是輸出流ostream中的物件 元素 3.a cout...

C 中 操作符過載

在實際程式中遇到一操作符問題,記錄下來方便以後查詢。在寫hashtable資料結構中,遇到操作符過載問題,具體需求如下 1.a x b 如果a x 為空,則新增記錄 2.b a x 如果a x 為空,則提示出錯 對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過...

c 中過載《操作符

在類定義中,有時候我們需要直接利用cout來列印出類中的資料,此刻就需要過載 操作符來實現 假定定義了乙個類time 然後宣告了乙個類 time a cout 這樣的語法肯定是會報錯的,此刻就需要過載operator 要怎麼做呢?首先,在過載函式中,要訪問到類time中的私有成員的資料,所以我們需要...