1. 重定义一个继承而来的non-virtual函数是应该避免的(见条款34,36),因此主要讨论为什么不重定义virtual函数的缺省参数值.

2. virtual函数的特点在于动态绑定,也就是运行时确定调用的函数实体,但令人惊讶的是,无论函数是否virtual,其缺省参数都是静态绑定的,例如:

class Base{
public:
    void fun(int a=0){
       ...
    }
    ...
private:
    ...
}
class DerivedOne:public Base{
    void fun(int a=1){
        ...
    }
private:
    ...
}
View Code

相关文章: