這是代碼,我很難理解:由於父保護構造函數,C++不能實例化一個子類?
class A
{
protected:
int _i;
A() : _i(0) { }
~A() { }
};
class B: public A
{
public:
A *_pa;
B() : A(), _pa(new A())
{ }
~B()
{
delete _pa;
}
};
int main()
{
A a; //ERROR
B b; //ERROR
}
當試圖實例化一個類A
型我得到一個錯誤,因爲它的構造是受保護的。但爲什麼我不能實例化類型B
?該課程可以訪問A
(包括ctor)的受保護成員,因此應該編譯。
也粘貼錯誤和它出現的行。 – iammilind 2013-02-13 13:51:50
爲什麼你想要一個成員類指針_and_繼承的類型'A'? – 2013-02-13 13:52:47
@TylerJandreau顯然,他只是測試受保護的構造函數... – 2013-02-13 13:54:18