构造函数与析构函数之比较

来源:互联网 发布:ubuntu torch lua 编辑:程序博客网 时间:2024/05/29 11:38

 

构造函数与析构函数的比较表:

名称

功能

是否可重载

是否可继承

是否可定义为虚函数

是否可带参数

是否有返回值

构造函数

初始化、自动调用

可重载

不可继承

不可定义为虚函数

可带参数

无返回值

析构函数

用于清除(实例、内存回收)、自动调用

不可重载(当定义为虚函数时,相当于隐性继承)

不可继承

可定义为虚函数

不可带参数

无返回值

 

注:重载指函数名相同、参数列表(参数个数或数据类型)不同,与返回值无关。

       继承指基类函数与派生类(子类)函数完全相同。

附:内联函数、构造函数和静态成员函数不可定义为虚函数。

为什么静态成员函数不可定义为虚函数?(反证法)

答:如果定义为虚函数,那么它就是动态绑定的,也就是在派生类中可以被覆盖的,这与静态成员函数的定义本身就是相矛盾的。