Рассмотрим этот код:
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()' является частным.
Но когда я удаляю частный, он просто работает. Почему метод public const не вызывается, когда не const const является закрытым?
Иными словами, почему разрешение на перегрузку возникает перед контролем доступа? Это странно. Считаете ли вы, что это непротиворечиво? Мой код работает, а затем я добавляю метод, и мой рабочий код вообще не компилируется.