次のコードがコンパイルされて正常に動作する理由を説明してください(gcc-4.3.4をチェックしてください)。私は選択的継承がメンバー/メソッドへのアクセスを弱めたり強化したりすることはできないと考えました。カプセル化ルールを破ることはありませんか?選択的継承C++
#include <iostream>
class A {
protected:
void foo() { std::cout << "foo" << std::endl; }
};
class B : private A {
public:
using A::foo; //foo() becomes public?!
};
int main() {
B b;
b.foo();
return 0;
}
+1私に何かを教えてください。 –
これは標準コンテナから個人的に継承するときに行います。基本的にはアップキャスティングは禁止されています(これは仮想デストラクタを必要としないことを意味します)。ただし、再実装/転送を面倒にする操作を許可します。 –