继承的虚函数缺省参数值不要重新定义的原因

来源:互联网 发布:成都家政公司办公软件 编辑:程序博客网 时间:2024/06/05 20:14

首先,缺省参数值只能作为函数的一部分而存在,只有两种函数可以继承:虚函数和非虚函数。

其次,重定义继承而来的非虚函数是一种错误,并不是说是语法上的错误,而是重定义非虚函数没有必要。

接下来,我们谈谈为什么不要重定义继承而来的虚函数的缺省参数值

在基类指针指向派生类对象或基类引用派生类对象时

1:虚函数是动态绑定,而缺省参数值是静态绑定。即虚函数是运行时确定类型,而缺省参数值是编译时就确定的。

2:如果重新定义的话,会使得程序调用基类的虚函数,这显然并不是你想要的结果。


c++坚持这样做的原因:

为了效率。如果缺省值被动态绑定,编译器就必须想办法为虚函数在运行时确定合适的缺省值,这将比现在采用的在编译阶段确定缺省值的机制更复杂。


阅读全文
0 0