考虑下面的代码:
struct A
{
void foo() const
{
std::cout << "const" << std::endl;
}
private:
void foo()
{
std::cout << "non - const" << std::endl;
}
};
int main()
{
A a;
a.foo();
}
编译器错误是:
Error: ‘ void A: : foo ()’is private‘错误: ‘ void A: : foo ()’是私有的’。
但是当我删除私人信息的时候,它就正常工作了。为什么当非 const 方法是私有的时候不调用 public const 方法?
换句话说,为什么重载解析优先于访问控制?真奇怪。你认为这是一致的吗?我的代码工作,然后我添加一个方法,我的工作代码根本不编译。