考虑这段代码:
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();
}
编译器错误是:
错误:'void A::foo()' 是私有的。
但是当我删除私人的时候它就可以工作了。当非常量方法是私有的时,为什么不调用公共 const 方法?
换句话说,为什么重载解决在访问控制之前?这很奇怪。你认为它是一致的吗?我的代码有效,然后我添加了一个方法,我的工作代码根本无法编译。