#include <iostream>
using namespace std;
class Base
{
public:
Base(){cout <<"Base"<<endl;}
virtual ~Base(){cout<<"~Base"<<endl;}
virtual void foo(){ cout<<"foo base"<<endl;}
};
class Derived: private Base
{
public:
Derived(){cout<<"Derived"<<endl;}
virtual ~Derived(){cout<<"~Derived"<<endl;}
virtual void foo(){ cout<<"foo dervied"<<endl;}
};
int main(int argc, char *argv[])
{
Base *pb = new Derived;
Derived d;
d.foo();
return 0;
}
當我執行上述示例程序我獲得以下錯誤: protected.cpp:在函數 'INT主(INT,字符**)': protected.cpp:26:錯誤:基地'是'派生的'難以接近的基地受保護的派生類
爲什麼不可能創建基地指針的派生對象?
所以我可以創建派生類的instanse像
Derived d
Derived d1= new Derived;
但是從基類指針創建例如像
Base * b = new derived
將失敗。
這是因爲Derived不是從派生類派生的派生類派生類和派生類?
這是正確的嗎?
爲什麼這個問題得到3個downvotes?這是一個完全合法的問題。 +1,可笑。 – mstrobl 2009-01-11 23:53:09