#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