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

C++ Const Member Function (Beginner)

本文关键字:初学者 函数 Const 成员 c++      更新时间:2023-10-16

在c++ Primer P259中,它说

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

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

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

引语正确

试试这个

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. s是一个指向常量的指针。调用非const方法会导致

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

但是s可以指向不同的实例。正如在注释中所说,指针可以指向不同的变量。