首页 > 代码库 > c++ 切勿重新定义继承来的带缺省参数的函数
c++ 切勿重新定义继承来的带缺省参数的函数
切勿重新定义继承来的带缺省参数的函数。我们知道,继承来的函数是virtual 的,至于原因在上一节中已经说明了,即“切勿重新定义父类non-virtual函数”。所以确切的描述应该是“切勿重新定义继承来的带缺省参数的virtual函数”。因为缺省参数是静态绑定,而virtual是动态绑定。
typedef enum _ColorEnum{ eRed = 1, eYellow, eBlack}ColorEnum;class BaseOption{public: BaseOption(void); ~BaseOption(void); virtual void Function(ColorEnum color = eYellow);};void BaseOption::Function(ColorEnum color){ cout<<"BaseOption::Function():"<<color<<endl;}class SubOption : public BaseOption{public: SubOption(void); ~SubOption(void); void Function(ColorEnum color);};void SubOption::Function(ColorEnum color){ cout<<"SubOption::Function()"<<color<<endl;}int main(){SubOption obj; BaseOption *pBase = &obj; SubOption *pSub = &obj; pBase->Function(); //pSub->Function();//error, can‘t find.}output: "SubOption::Function() 2"
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。