C++ 学习(继承和动态内存分配)

原创 2015年11月21日 14:33:43

1> 派生类不使用new

class baseDMA{
  private:
  char * label;
  int rating;
  public:
   baseDMA(const char *l = "null", int r = 0);
   baseDMA(const baseDMA & rs);
   virtual ~baseDMA();
   baseDMA & operator = (const baseDMA & rs);
   ...
}

class lacksDMA : public baseDMA
{
  private : 
   char color[40];
  public:
  .... 
}

不需为派生类定义显示的复制构造,析构,赋值符号等从操作
派生类的默认构造函数,编译器将自定义默认的构造函数要进行一些操作: 执行之自身的代码后调用基类 的析构函数。

1> 派生类不使用new

class baseDMA{
  private:
  char * label;
  int rating;
  public:
   baseDMA(const char *l = "null", int r = 0);
   baseDMA(const baseDMA & rs);
   virtual ~baseDMA();
   baseDMA & operator = (const baseDMA & rs);
   ...
}

class hashDMA : public baseDMA
{
  private : 
   char *style;
  public:
  .... 
}

在这种情况下必须使用派生类显示析构函数,复制构造函数和复制操作等

派生类析构函数自动调用基的析构函数,所以自身的指责是对派生类构造函数执行工作的清理。所以hasDMA析构函数必须释放style管理的内存,应依赖于baseDMA的析构函数来释放lable管理的内存。

所以

baseDMA :: ~baseDMA(){ delete [] lable;}
hasDMA :: ~hasDMA(){delete [] style;}

hasDMA的复制构造函数只能访问hasDMA的数据。它必须调用baseDMA复制构造函数来共同处理

相关文章推荐

C++动态内存分配研究

  • 2010年05月31日 14:37
  • 89KB
  • 下载

动态内存分配C++实例

  • 2011年10月08日 08:31
  • 123KB
  • 下载

C++继承关系中的动态内存分配

假设基类使用动态内存分配,并重新定义了赋值和复制构造函数 class class_a { private: char* a; int rating; public: cl...

C++中继承与动态内存分配

第一种情况:派生类不使用new jias

继承与动态内存分配——《c++primer plus第五版》

2008-04-09 00:25 继承与动态内存分配——《c++primer plus第五版》 http://hi.baidu.com/wangxiaoliblog/item/e334fcba4...
  • angelxf
  • angelxf
  • 2012年08月10日 20:53
  • 860

C++之继承和动态内存分配

C++之继承和动态内存分配
  • sunfei2
  • sunfei2
  • 2014年04月04日 20:07
  • 549

Linux-(C/C++)动态内存分配malloc以及相关学习

1、C/C++内存分类(引用C++ Primer )(对象在C语言中可以理解为变量)    1.1、静态内存:静态内存用来保存局部static对象、类static数据成员、以及定义在任何函数之外的变量...

C++ Primer Plus学习之类学习三(类和动态内存分配)

本章节的学习以一个存在诸多bug的类StringBad开始,通过不断的总结该类中出现的问题以及如何解决的来学习类中的动态内存分配方法。 首先是类的声明: class StringBad        ...

【C++基础】动态内存分配

在程序运行的过程中,我们需要能够自由地创建和销毁对象。 在C中,提供了动态内存分配(dynemic memory alloction)函数malloc()和free(),这些函数可以在运行时从堆中分配...

C++ 高级数据类型(四)—— 动态内存分配

到目前为止,我们的程序中我们只用了声明变量、数组和其他对象(objects)所必需的内存空间,这些内存空间的大小都在程序执行之前就已经确定了。但如果我们需要内存大小为一个变量,其数值只有在程序运行时 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 学习(继承和动态内存分配)
举报原因:
原因补充:

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