(@转载请注明出处:http://blog.csdn.net/cmatch)
很多情况下,使用const reference作为参数传入,进行函数处理。
举例如下:
class TClass {
public:
TClass(int i = 1): value(i) {}
int getIt() const { return value; } //解析点1
private:
int value;
};
//void print(TClass obj) {
void print(const TClass& obj) { //解析点2
cout << obj.getIt() << endl; //解析点3
}
int main() {
TClass a(100);
print(a);
return 0;
}
正确使用const解析:
如果在TClass::getIt()成员函数没有申明为const的话,则直接在print()函数中使用const obj,将出现编译错误,是因为编译器不知道getIt()方法会不会改变obj这个对象,因为此函数参数对象申明为const。所以不让编译通过。