C++中 隐藏、重写(覆盖)解析

本文为博主原创。引用请注明出处。

由于重载比较清楚,很多人都明白,不再多说。

条件A:父类指针或引用指向子类对象。

隐藏:
子类中如果有一个函数(无论是否为虚函数,虚函数只在条件A中有用。所以如果没有条件A就无视virtual,把他当做平常函数一样)与父类同名,则继承下来的所有同名函数都被隐藏而不能使用。

重写:
其实就是父类中加了一个virtual关键字,子类中又重新按照函数声明的格式 严格地写了一次(virtual即使没有加也要认为是加了)。至于怎么使用,必须结合条件A才能讲得通。如果不是那种情况,就可以当做是普通的一个成员函数,不要多想其它的了,该重载重载,该隐藏隐藏,该继承继承。

构造与析构函数:
这两个函数比较特殊,所以单独拿出来说:首先这两个函数都不会被继承。而且调用都一定会调用父类的构造与析构函数。而且析构函数没有参数不能重载。

其实单个概念说起来都比较简单。真正难的是全部混合在一起的时候。
不过理清了道理,以后再遇到继承的时候就可以有一个思考的过程了:

类型决定了所能访问的接口。
如果子类想改变父类的访问方式,可以通过隐藏的方式来实现。
但如果是条件A时,隐藏方式就不能奏效了。因为指针的类型是父类的。
如果在条件A下还能访问子类的同名方法,就只能在父类中声明为virtual虚函数了。

成员变量在重写的情况下,会隐藏父类的成员变量。

注意:隐藏不是没有了,只是不给我们调用了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值