有essentialC++的朋友看一下,这里是不是错了?
yugn 2002-08-14 05:33:51 近来看essential,看到p111页(倒数第九行),发现有个地方好像错了,不知道判断有没错,先问一下大家:
void example( const BigClass *pbc, BigClass &rbc)
{
pbc->val();//这会调用const版本
rbc.val(); //这会调用non-const版本
}
我觉得参数列表中的“BigClass”应该是上文中给出的“val_class”。因为上文明写出了定义:
class val_class{
public:
const BigClass& val() const { return _val;}
BigClass& val() { return _val; }
//...
};
如果参数列表不是这样:
void example( const val_class *pbc, val_class &rbc)
下面哪来
pbc->val();
rbc.val();
这两条语句呀?
撇开这个错误(如果是的话),这一段说得还几有价值的。可能很多warring都与const member function有关。不过在vc中我试过了,如果是const reference 参数调用了non-const的成员函数(即改变成员变量),将引起以下error:
Cannot convert 'this' pointer from 'const class xxx' to 'class xxx&'