gpt4 book ai didi

C++ Const 成员函数(初级)

转载 作者:行者123 更新时间:2023-11-30 02:29:41 24 4
gpt4 key购买 nike

在 C++ Primer P259 中,它说

Objects that are const, and references or pointers to const objects, may call only const member functions.

然而,根据我目前的理解,指向 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 方法导致

passing ‘const TestClass’ as ‘this’ argument discards qualifiers [-fpermissive]

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

关于C++ Const 成员函数(初级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com