我是 C++ 新手。我正在学习 C++ oops 概念。 是否允许使用派生类(D)分配基类(B)指针的内存?
B *a = new D();
我的代码:
#include <iostream>
using namespace std;
class B
{
public:
B()
{
cout<<"B constructor"<<endl;
}
~B()
{
cout<<"B Destroctur"<<endl;
}
};
class D : public B
{
public:
D()
{
cout<<"D constructor"<<endl;
}
~D()
{
cout<<"D Destroctur"<<endl;
}
};
int main()
{
B *a = new D();
delete a; // Is valid?
}
另外,释放基类指针的内存是否有效?
delete a;
最佳答案
只要声明基类析构函数为virtual,它就有效:
virtual ~B() { /*B destructot code*/}
关于c++ - 使用派生类分配基类指针的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135960/