次のコードを検討してください。
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 以外のメソッドが非公開の場合に public const メソッドが呼び出されないのはなぜですか?
言い換えれば、オーバーロードの解決がアクセス制御よりも先に行われるのはなぜでしょうか? 変ですね。一貫していると思いますか?コードが機能し、メソッドを追加すると、作業中のコードがまったくコンパイルされません。