码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 切勿重新定义继承来的带缺省参数的函数

时间:2014-07-16 21:36:12      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   cti   re   

 切勿重新定义继承来的带缺省参数的函数。我们知道,继承来的函数是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"

 

c++ 切勿重新定义继承来的带缺省参数的函数,布布扣,bubuko.com

c++ 切勿重新定义继承来的带缺省参数的函数

标签:style   blog   color   io   cti   re   

原文地址:http://www.cnblogs.com/zhidao-chen/p/3835800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!