C ++ Const成员函数(初学者)

时间:2016-09-04 19:19:43

标签: c++ member-functions

在C ++ Primer P259中,它说

  

const的对象,以及const对象的引用或指针,   可能只调用const成员函数。

然而,基于我目前的理解,指向const对象的指针不一定适用,因为指针本身是非对象的。只要成员函数不修改指向的对象,在指向const对象的指针上调用非对象成员函数就是合法的。
这是对的吗?

编辑:好的,我现在得到它,因为当我们在指针"上调用成员函数时,我们实际上是首先取消引用它,然后使用下面的对象。

1 个答案:

答案 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();
}
  1. 是指向常量的指针。调用非const方法会导致
  2.   

    将'const TestClass'传递为'this'参数会丢弃限定符[-fpermissive]

    1. 然而,s可以指向不同的实例。如评论中所述,指针可以指向不同的变量。