class aaa
{
public :
aaa(){}
virtual void fun()=0;
virtual void fun1()=0;
virtual ~aaa(){}
};
//注意这里是private继承
class bbb:private aaa
{
public :
bbb(){}
virtual void fun(){}
virtual void fun1(){}
~bbb(){}
};
在 aaa*pa=new bbb();的时候出现错误:aaa’是‘bbb’不可访问的基类
这是为什么呢?
私有继承,从面向兑现的角度来说,它不希望调用者认为bbb是从aaa继承的,如果你希望编译,那么改用公有继承
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
这样aaa的构造函数只能在bbb类的内部访问,而你在其他地方访问的时候,就会因为构造函数是私有的而出错
在 aaa*pa=new bbb();
将私有继承改为公有继承就可以了