我很惊讶地发现“const”中存在这个“漏洞”:
#include <stdio.h>
class A
{
int r ;
public:
A():r(0){}
void nonconst()
{
puts( "I am in ur nonconst method" ) ;
r++;
}
} ;
class B
{
A a ;
A* aPtr ;
public:
B(){ aPtr = new A() ; }
void go() const
{
//a.nonconst() ; // illegal
aPtr->nonconst() ; //legal
}
} ;
int main()
{
B b ;
b.go() ;
}
所以基本上从
const
方法B::go()
,如果通过指针引用类型为A
的对象,则可以调用非常量成员函数(称为nonconst()
)。
为什么会这样呢?似乎是个问题(在我的代码中确实是这样的)。