有次写构造函数时遇到了如标题的bug
class CCircle{
int radius;
//......
public:
CCircle(int r):radius(r){}
CCircle(const CCircle& c):radius(c.GetR()){} //bug!
//......
int GetR()/*const*/ { return radius; } //注释掉函数名()后的const
//......
}
总结:
1)const对象只能调用const函数;
2)如果const函数中不小心修改了类成员或者调用了非常量函数,编译器会找出这类错误。