11
非constメソッドがプライベートのときにpublic constメソッドが呼び出されないのはなぜですか?
このコードを考えてみましょう: 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()' is private`。 しかし、私がプライベートのものを削除すると、それはうまくいきます。非constメソッドがプライベートのときにpublic constメソッドが呼び出されないのはなぜですか? 言い換えると、なぜ過負荷解決がアクセス制御の前に来るのですか?これは奇妙です。一貫していると思いますか?コードが機能してからメソッドを追加しましたが、機能しているコードがまったくコンパイルされません。