一、继承中的构造函数
根据构造函数的执行流程我们知道:
派生类定义时,先执行基类的构造函数,再执行派生类的构造函数
拷贝构造函数与上面是相同的原理
二、继承中的析构函数
根据析构函数的执行流程我们知道:
派生类释放时,先执行派生类的析构函数,再执行基类的析构函数
二、继承中被删除的函数的语法
基类或派生类可以将其构造函数或者拷贝控制成员定义为删除的。此外,某些定义基类的方式也可能导致有的派生类成员成为被删除的函数。规则如下:
如果基类中的默认构造函数、拷贝构造函数、拷贝赋值运算符、或析构函数是被删除的或者是不可访问的,则派生类中对应的成员将是删除的,原因是编译器不能使用基类成员来执行派生类对象中属于基类的部分操作
如果在基类中有一个不可访问或删除掉的析构函数,则派生类中合成的默认和拷贝构造函数将是被删除的,因为编译器无法销毁派生类对象的基类部分
编译器不会合成一个删除掉的移动操作。当我们使用=default请求一个移动操作时,如果基类中的对应操作是删除的或不可访问的,那么派生类中该函数是被删除的,原因是派生类对象的基类部分不可移动。同样,如果基类的析构函数是删除或不可访问的,则派生类的移动构造函数也将是被删除的