c++ - 使用派生类分配基类指针的内存

标签 c++ pointers heap-memory

我是 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/

相关文章:

android - 在 C 代码中访问 Android 属性

c++ - 'int' 之前应为不合格 ID

c - 指向二维数组的一维指针

改变数组的基址

垃圾内存支持的java编码标准

c - 在这种情况下是否发生堆碎片?

c++ - 类函数/变量是否必须在使用前声明?

c++ - assert() 函数没有出现在反汇编中

c++ - 将指针传递给函数

node.js - Grunt CLI 尝试编译 bootstrap.less 时崩溃