我定義了兩個版本的重載operator[]
函數的類array
。 ptr
是指向array
對象的第一個元素的指針。const重載的operator []函數及其調用
int& array::operator[] (int sub) {
return ptr[sub];
}
和
int array::operator[] (int sub) const {
return ptr[sub];
}
現在,如果我定義了一個const對象integer1
第二功能只能叫.....但如果我做一個非const對象,然後如下調用:
cout << "3rd value is" << integer1[2];
這裏調用哪個函數?
對於'const'對象或訪問路徑,'const'函數被調用。否則,調用非const。 'array'可能不是類名的好選擇,因爲在新的C++ 11標準中有一個'std :: array'模板。 – Potatoswatter 2011-04-23 04:45:31
只是一個觀察。如果你從const版本返回const引用會更好。例如,請參閱* std :: vector :: operator [] *的聲明。 – pic11 2011-04-23 10:00:24