gpt4 book ai didi

c++ - 在非常量对象上,为什么 C++ 不调用具有 public-const 和 private-nonconst 重载的方法的 const 版本?

转载 作者:IT老高 更新时间:2023-10-28 12:53:10 25 4
gpt4 key购买 nike

class C
{
public:
void foo() const {}
private:
void foo() {}
};

int main()
{
C c;
c.foo();
}

MSVC 2013 不喜欢这样:

> error C2248: 'C::foo' : cannot access private member declared in class 'C'

如果我转换为 const 引用,它可以工作:

const_cast<C const &>(c).foo();

为什么我不能在非const对象上调用const方法?

最佳答案

对象不是const,所以非const 重载是更好的匹配。重载解决发生在访问检查之前。这可确保重载决议不会因更改成员函数的访问而意外更改。

关于c++ - 在非常量对象上,为什么 C++ 不调用具有 public-const 和 private-nonconst 重载的方法的 const 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316779/

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