delete 基类指针 释放为派生类分配的空间

原创 2008年09月28日 12:45:00

用途:

在全局程序域类使用某一类型对象(基类 Base Class), 一般不实例化基类,

 

而是实例化基类的派生类,

 

在全局程序内我们只关心这类对象的行为(基类中的虚函数),而不关心

 

其具体实现(在派生类中override 基类的方法)

 

最后,释放为派生类分配的存储空间。

 

Example Code:

 

class Base

{

public:

    Base();

    virtual ~Base();  //attention keyword virtual,

                              //only declare as virtual, when delelte pBase

                              // can call pDerive->~Derive(), and free the space allocate for object of derive class.

 

public:

    virtual int method1();

    virtual int method2();

    .

    .

    .

private:

    int var;

    .

    .

};

 

class Dervie : public Derive

{

public:

    Dervie ();

    virtual ~Dervie ();  //attention keyword virtual,

                              //only declare as virtual, when delelte pBase

                              // can call pDerive->~Derive(), and free the space allocate for object of derive class.

public:

   

    int method1();

    int method2();

    .

    .

    .

};

 

 

void func(Base **ppBase)

{

    *ppBase=new Derive;

}

 

int main()

{

    Base *pBase;

    func(&pBase);

    delete pBase;

 

    return 0;

}

类继承中,通过基类指针delete释放,是否会造成内存泄漏

[序言] 很久不写C/C++技术贴了,算一下自己用C++也有7~8年了,虽然现在用Delphi比较多,但是对C++还是有一份热情.前段时间在CSDN看到一个帖子,让我感到非常失落, 很多人都没有引用...
  • yangguihao
  • yangguihao
  • 2015年10月30日 10:46
  • 1383

为什么要用基类指针指向派生类对象?

在基类与派生类之间,有一个规定:派生类对象的地址可以赋给指向基类对象的指针变量(简称基类指针),即基类指针也可以指向派生类对象。为什么有这一规定呢?因为它可以实现多态性【1】,即向不同的对象发送同一个...
  • FlyingBird_SXF
  • FlyingBird_SXF
  • 2014年11月21日 21:29
  • 1705

基类与派生类,父类指针指向子类对象

先来看一段程序: #include using namespace std; class Base_J { public: Base_J() { cout ...
  • wangzengdi
  • wangzengdi
  • 2014年06月11日 11:30
  • 3518

C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? https://www.zhihu.com/question/30838092/answer/49623765

https://www.zhihu.com/question/30838092/answer/49623765 C++通过基类指针delete派生类数组,析构函数是虚函数,程...
  • wangyin159
  • wangyin159
  • 2015年12月15日 20:25
  • 684

《虚函数——用基类指针访问派生类中的成员函数》

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 《...
  • sdliujiangbo
  • sdliujiangbo
  • 2012年07月03日 10:33
  • 6211

C++中指向派生类的基类指针、基类引用的一点总结

#include class A { public:  void a1(){   std::cout  }  virtual void vt(){   std::cout ...
  • liushuimpc
  • liushuimpc
  • 2013年09月17日 08:42
  • 978

面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析

如果C同时派生了基类A和基类B,那么C的对象的内存是如何分布的呢?基类指针pa和基类指针pb对这块派生类C对象的内存所存储的内容又做和解析?或者说pa和pb指向的地址是否是C对象的首地址呢? 1.继承...
  • ordeder
  • ordeder
  • 2014年05月10日 14:21
  • 2954

为什么基类指针和引用可以指向派生类对象,但是反过来不行?

基类指针和引用BaseClass *pbase = NULL; DerivedClass dclass; pbase = & dclass; 基类指针和引用可以指向派生类对象,但是无法使用不存在...
  • u011939264
  • u011939264
  • 2016年08月10日 19:32
  • 1304

面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析

原文链接:ordeder  http://blog.csdn.net/ordeder/article/details/25477363 关于非虚函数的成员函数的调用机制,可以参考: h...
  • yishuige
  • yishuige
  • 2015年04月16日 11:08
  • 266

基类指针指向派生类对象

成员函数一般化三个结论 #include using std::cout; using std::endl; class Employee { public:         void Work(...
  • cai0612123
  • cai0612123
  • 2013年08月05日 09:42
  • 1085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delete 基类指针 释放为派生类分配的空间
举报原因:
原因补充:

(最多只允许输入30个字)