請問你能解釋爲什麼下面的代碼編譯和工作正常(在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教我的東西。 –
您在從標準容器私下繼承時執行此操作。基本上,你禁止臨近(這意味着你不需要一個虛擬析構函數),但是你允許一些繁瑣的操作來重新實現/轉發。 –