很多情況下,examda提示:使用const reference作為參數(shù)傳入,進(jìn)行函數(shù)處理。
舉例如下:
class TClass {
public:
TClass(int i = 1): value(i) {}
int getIt() const { return value; } //解析點(diǎn)1
private:
int value;
};
//void print(TClass obj) {
void print(const TClass& obj) { //解析點(diǎn)2
cout << obj.getIt() << endl; //解析點(diǎn)3
}
int main() {
TClass a(100);
print(a);
return 0;
}
正確使用const解析:
如果在TClass::getIt()成員函數(shù)沒有申明為const的話,則直接在print()函數(shù)中使用const obj,將出現(xiàn)編譯錯(cuò)誤,是因?yàn)榫幾g器不知道getIt()方法會(huì)不會(huì)改變obj這個(gè)對(duì)象,因?yàn)榇撕瘮?shù)參數(shù)對(duì)象申明為const。所以不讓編譯通過。
舉例如下:
class TClass {
public:
TClass(int i = 1): value(i) {}
int getIt() const { return value; } //解析點(diǎn)1
private:
int value;
};
//void print(TClass obj) {
void print(const TClass& obj) { //解析點(diǎn)2
cout << obj.getIt() << endl; //解析點(diǎn)3
}
int main() {
TClass a(100);
print(a);
return 0;
}
正確使用const解析:
如果在TClass::getIt()成員函數(shù)沒有申明為const的話,則直接在print()函數(shù)中使用const obj,將出現(xiàn)編譯錯(cuò)誤,是因?yàn)榫幾g器不知道getIt()方法會(huì)不會(huì)改變obj這個(gè)對(duì)象,因?yàn)榇撕瘮?shù)參數(shù)對(duì)象申明為const。所以不讓編譯通過。