gpt4 book ai didi

C++ : discards qualifier even if the member variables are mutable

转载 作者:太空狗 更新时间:2023-10-29 23:43:36 24 4
gpt4 key购买 nike

我在 const/mutable 和 protected 方面遇到了一些问题。也许这些让我有点困惑,所以我举个例子。

class Base 
{
virtual void foo() const ;
protected :
void bar( int y ){ d_x = y } ;
private :
mutable int d_x ;
}

所以基类有一个虚拟的foo

class Derived : public Base
{
void foo() const { bar(5); }
private :
mutable int d_x ;
}

所以在我的派生类中,我实现了 foo,该类 bar 然后写入私有(private) d_x。

我认为没问题 - 但编译器说:

passing 'Derived' as 'this' argument of bar discards qualifier.

这是为什么呢?我想通过使用 mutable 我可以使我的成员函数成为常量。

最佳答案

从 const 限定函数(例如 foo)内部,您只能调用其他 const 限定函数。 bar 不是 const 限定函数。

bar 仅触及 d_x 这一事实并不重要。 d_x 的可变性仅意味着 const 限定成员函数可以直接修改它。正式地,bar 可以修改任何 成员(如果它们存在的话)。

关于C++ : discards qualifier even if the member variables are mutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196043/

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