继承和动态内存分配(C++ Primer Plus 第十三章)
2014-05-16 15:19
260 查看
第一种情况:派生类中不使用new
class baseDMA{ private: char *label; int rating; public: baseDMA(const char *l = nullptr, int r =0); baseDMA( const baseDMA &rs); virtual ~baseDMA(); baseDMA & operator=( const baseDMA &rs); };
class lacksDMA : public baseDMA { private: char color[40];//原书这里有错误,我猜测应该是 long temp; 定义一个长整形。 public: };派生类lacksDMA不使用new。
派生类直接使用基类的析构函数没有问题。
难点在于理解重载复制构造函数。 如果是long参数的话,那lacksDMA复制的话,temp变量采用常规赋值即可,继承的baseDMA对象则采用基类的复制构造函数。
第二种情况:派生类使用了new
class lacksDMA : public baseDMA { private: char *style; public: };这种情况下,派生类必须定义显示析构函数,复制构造函数和赋值运算符。
如下:
hasDMA::hasDMA(const hasDMA & hs) : baseDMA(hs) { style = new char[ std::strlen(hs.style)+1]; std::strcpy(style, hs.style); } hasDMA & hasDMA::operator=(const hasDMA & hs){ if (this == &hs) { return *this; } baseDMA::operator=(hs); //赋值基类对象 也是采用动态分配内存 显示调用 delete []style; style = new char[ std::strlen(hs.style)+1]; std::strcpy(style, hs.style); return *this; } hasDMA::~hasDMA(){ delete [] style; }
相关文章推荐
- 继承和动态内存分配(C++ Primer Plus 第十三章)
- [学习笔记] C++ primer plus 第十三章 类继承
- 2012/1/27 《C++ Primer Plus》第十二章:类和动态内存分配 学习笔记
- 《C++ Primer Plus(第六版)》(27)(第十三章 类继承 编程题答案)
- 《C++ Primer Plus(第六版)》(24)(第十二章 类和动态内存分配 编程题和答案)
- 《C++ Primer Plus》12.6 复习各种(类和动态内存分配的)技术 笔记
- C++ Primer Plus学习:第十三章 类继承(2)
- C++ Primer Plus学习:第十三章 类继承(1)
- 2012/1/27 《C++ Primer Plus》第十二章:类和动态内存分配 学习笔记
- C++ Primer Plus学习:第十三章 类继承(3)
- 《C++ Primer Plus(第六版)》(23)(第十二章 类和动态内存分配 复习题和答案)
- 《C++ Primer Plus(第六版)》(22)(第十二章 类和动态内存分配 笔记)
- 《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)
- 2012/1/31 《C++ Primer Plus》第十三章:类继承 学习笔记
- 2012/1/31 《C++ Primer Plus》第十三章:类继承 学习笔记
- 《C++ Primer Plus(第六版)》(26)(第十三章 类继承 复习题答案)
- 《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
- 【读书笔记:C++ primer plus 第六版 中文版】第13章 类继承
- c++primer plus第十四章-valarray类、explicit、私有、保护继承
- c++primer plus第十三章-虚函数virtual