aihot  2020-11-12 11:20:01  OpenCV |   查看评论   

如果没有显式调用,那么将会隐式地调用基类的默认构造函数完成基类部分成员的定义,这样最终得到的派生类对象就很奇怪了。

7.3.2 派生类赋值操作符

与复制构造函数类似,必须显式地调用基类的基类的赋值函数。

Derived& Derived::operator=(const Derived &rhs) {     if (this != &rhs)     {         Base::operator=(rhs);         // then do     }     return *this; }
7.3.3 派生类的析构函数

派生类析构函数不负责撤销基类对象的成员。编译器总是显式调用派生类对象基类部分的析构函数。每个析构函数只负责清除自己的成员。

7.3.4 虚析构函数
Item_base *itemP = new Item_base; delete itemP; itemP = new Bulk_item; delete itemP;

上面中,在delete指向类的指针时,将调用析构函数,可是这里itemP可能指向基类也可能指向派生类,所以这时候应该在运行阶段根据类型去调用不同的析构函数。

所以基类的析构函数为虚函数:virtual ~Item_base(){}

7.3.5 在构造函数和析构函数中调用虚函数

运行的是为构造函数或析构函数自身类型定义的版本。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自C++的那些事:面向对象

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]