在C ++ Primer P259中,它说
const的对象,以及const对象的引用或指针, 可能只调用const成员函数。
然而,基于我目前的理解,指向const对象的指针不一定适用,因为指针本身是非对象的。只要成员函数不修改指向的对象,在指向const对象的指针上调用非对象成员函数就是合法的。
这是对的吗?
编辑:好的,我现在得到它,因为当我们在指针"上调用成员函数时,我们实际上是首先取消引用它,然后使用下面的对象。
答案 0 :(得分:3)
引用是正确的。
试试这个
class TestClass
{
public:
void nonconst(){};
void constMethod() const {}
};
int main()
{
TestClass const *s = new TestClass();
//s->nonconst(); // (1) no not legal
s->constMethod();
s = new TestClass(); // (2) yes legal
s->constMethod();
}
将'const TestClass'传递为'this'参数会丢弃限定符[-fpermissive]