您的位置:首页 > 其它

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

2013-10-31 09:10 239 查看
在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里面的2
return 0;
}

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

/article/10925986.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: