class A
{
public:
A() : i(9)
{
}
/*const*/ int i;
};
int main(int argc,char* argv[])
{
A *pa= new A;
A &ra = *pa;
ra = *pa;//如果A里面有const的成员变量,那么改变ra的引用间接的也代表着该const的成员变量贝改变,所以这里会报错
return 0;
}
以上代码去掉const的注释编译将不能通过,在vs2008上确是如此,const的不能改变的语义限制是很强的。