c++ primer plus P516,继承与动态内存分配
继承与动态内存分配
继承时派生类不使用new,则无需重新定义构造函数、析构函数、复制构造函数、重载赋值运算符;
继承时派生类使用new进行动态内存分配:
需要显式的定义
- 析构函数
- 复制构造函数
- 赋值运算符重载(需要先判断是不是this指针,再delete原动态内存分配,最后分配内存)
何时调用复制构造函数
- 将新对象初始化为一个同类对象( A a(b); A a = b; );
- 按值将对象传递给函数;
- 函数按值返回对象;
- 编译器生成临时对象;
所以,通常用按引用传递,给函数传递参数;
公有继承与私有继承
感觉使用时最大的区别:
- 公有继承在方法中使用( a.func() )方式调用基类方法;
- 私有继承必须用( A::func() ) 方式调用基类方法;