绝不重新定义继承而来的缺省参数值

来源:互联网 发布:wpsoffice软件怎么用 编辑:程序博客网 时间:2024/05/07 13:35
在effective C++ 条款37:绝不重新定义继承而来的缺省参数值
#include "iostream"using namespace std;class base{public:virtual void fun(int i=1){cout<<"base::"<<i<<endl;}};class derive:public base{private:virtual void fun(int i=2){cout<<"derive::"<<i<<endl;}};int main(int argc, char const *argv[]){base *test = new derive();test->fun();//此时输出的i仍然是1,而不是derive里面的2return 0;}

 绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定,而virtual函数-你唯一应该覆写的东西-却是动态绑定.

http://blog.csdn.net/scofieldzhu/article/details/4407616