gpt4 book ai didi

c++ - const 内的非 const

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:07 27 4
gpt4 key购买 nike

class A
{
void koo(){}
void foo() const {this->koo();}
};

int main()
{
A a;
a.foo();
}

我试图在 const 函数中调用一个非常量函数。

error: passing ‘const A’ as ‘this’ argument of ‘void A::koo()’ discards qualifiers [-fpermissive]
  1. 这个错误是什么意思?
  2. 我可以为此使用可变关键字吗?如果可以,怎么办? ( as this post )
  3. 我可以为此使用 const_cast 吗?如果那样,怎么办? ( as this post )
  4. 还有其他方法可以做到这一点吗?

最佳答案

  1. 在函数 foo 中,this 的类型为 const A*。为了在其上调用非常量函数,您最终会在 koo 中得到 this 具有相同的值,但类型为 A* ,即它会丢弃 const 限定符。

  2. 没有。

  3. 你可以,因为你碰巧知道 koo 函数不会修改作为 A 数据成员的任何 const 对象(因为 (a)函数体为空且 (b) A 没有数据成员且 (c) 它是在 A 的非常量实例上调用的)。但不要那样做。

  4. koo标记为const成员函数,与foo相同。

关于c++ - const 内的非 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12779453/

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