繁体   English   中英

C++ 常员 Function(初级)

[英]C++ Const Member Function (Beginner)

在 C++ Primer P259 中,它说

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

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

编辑:好的,我现在明白了,这是因为当我们“在指针上调用成员 function”时,我们实际上是先取消引用它,然后在下面使用 object。

报价是正确的。

尝试这个

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]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM