C++:重载和覆盖

覆盖(override):如果派生类创建的成员函数具有与基类中的成员函数相同的返回类型和签名,但是具有新的实现

example:

class Mammal: 
    void Sleep() const {std::cout<<"I'm sleeping\n";}
    void Sleep(int time) const {std::cout<<"I'm sleeping"<<time<<"\n";}
    void Sleep(int time, int week) {std::cout<<"I'm sleeping"<<time<<week<<"\n";}

class Dog:public Mammal: 
    void Sleep() const {std::cout<<"you're sleeping\n";}

Mammal中重载了Sleep()方法
Dog中覆盖了Sleep()方法
注意:Dog覆盖了Sleep()方法,会导致隐藏了Mammal中使用Sleep这个名称的所有方法,即Sleep(),Sleep(int time), Sleep(int time, int week)

2.调用基类方法

Dog fido;
Mammal bigAnimal;
bigAnimal.Sleep()
bigAnimal.Sleep(7)
bigAnimal.Sleep(7,8)
fido.Sleep()        //调用自己的Sleep方法
fido.Sleep(6)       //error, Mammal的Sleep(int time)被隐藏,
fido.Mammal::Sleep(6) //正确,使用基类名称,调用隐藏的基类方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值