让我们X
成为一个具有成员函数的类f()
。
this
是 的隐含参数f()
,它的类型是X* const
。
然后,如果f() const
是 const 成员函数,则this
指针的类型是 now const X* const
。
this
在这两种情况下,指针的类型似乎都是const
. 那么为什么允许在函数f()
定义中修改类的任何数据成员X
?我们不应该总是const_cast
求助于
void X::f() {
const_cast <int&> (member) = 1;
}
如果f() const
是 const,那么这是这样做的方法:
void X::f() const{
const_cast <int&> (member) = 1;
}
(或者你也可以让成员可变)
但是为什么这有效
void X::f() {
member = 1;
}