关于C++的隐藏

隐藏 

case 1:
基类:
virtual void DoJob(int a)
{count<<"one in base class"<<a<<endl};
virtual void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
空
结论:直接调用基类的方法

case 2:
基类:
void DoJob(int a)
{count<<"one in base class"<<a<<endl};
void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
空
结论:直接调用基类的方法

case 3:
基类:
virtual void DoJob(int a)
{count<<"one in base class"<<a<<endl};
virtual void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
void DoJob(int a) 或 void DoJob(int a, int b)
结论:只能调用子类的方法,基类的方法隐藏(添域可直接调用)

case 4:
基类:
virtual void DoJob(int a)
{count<<"one in base class"<<a<<endl};
virtual void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
void DoJob(double a)
结论:只能调用子类的方法,基类的方法隐藏(添域可直接调用)

case 5:
基类:
 void DoJob(int a)
{count<<"one in base class"<<a<<endl};
 void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
void DoJob(int a) 或 void DoJob(int a, int b)
结论:只能调用子类的方法,基类的方法隐藏(添域可直接调用)

case 6:
基类:
 void DoJob(int a)
{count<<"one in base class"<<a<<endl};
 void DoJob(int a, int b)
{count<<"two in base class"<<a<<endl};

子类:
void DoJob(double a)
结论:只能调用子类的方法,基类的方法隐藏(添域可直接调用)

由此看来,隐藏与基类是否用virtual并没有直接的关系,关键是看基类是否写了同名的函数,写了同名的函数(无论参数列表和类型是否相同),基类的方法隐藏,默认只能调用子类的函数(可通过域调用基类的方法,Example:B子类,A基类 b.A::DoJob(5)).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值