构造函数与析构函数的比较表:
名称 | 功能 | 是否可重载 | 是否可继承 | 是否可定义为虚函数 | 是否可带参数 | 是否有返回值 |
构造函数 | 初始化、自动调用 | 可重载 | 不可继承 | 不可定义为虚函数 | 可带参数 | 无返回值 |
析构函数 | 用于清除(实例、内存回收)、自动调用 | 不可重载(当定义为虚函数时,相当于隐性继承) | 不可继承 | 可定义为虚函数 | 不可带参数 | 无返回值 |
注:重载指函数名相同、参数列表(参数个数或数据类型)不同,与返回值无关。
继承指基类函数与派生类(子类)函数完全相同。
附:内联函数、构造函数和静态成员函数不可定义为虚函数。
为什么静态成员函数不可定义为虚函数?(反证法)
答:如果定义为虚函数,那么它就是动态绑定的,也就是在派生类中可以被覆盖的,这与静态成员函数的定义本身就是相矛盾的。