sri*_*iks 1 c++ inheritance new-operator
鉴于此代码:
class Base{
public:
Base();
virtual ~Base();
};
class Derived: protected Base{
public:
virtual ~Derived();
};
Run Code Online (Sandbox Code Playgroud)
在主要我试图以这种方式分配派生到基地:
Base *pd = new Derived;
Run Code Online (Sandbox Code Playgroud)
为什么这个语句会产生错误?
这里new将返回一个对象类型的指针,我们总是可以将一个派生指针分配给一个基类.如果我错了,请纠正我.
要将指向一个类的指针转换为指向不同类类型的指针,必须在调用它时访问该转换.
由于Base是一个保护基Derived不能初始化类型的变量Base *从表达式new Derived(其类型Derived *的成员函数的外部)Derived,从它或派生的类friend的Derived.