基类与派生类中同名成员的关系

派生类中有与基类同名的成员,则优先使用派生类成员,要使用基类成员则要用classname::var(同名隐藏)

从不同基类中继承了同名成员,但派生类没有同名成员,使用则用域名限制

◇型继承,派生类中有同名成员,使用域名限制访问,但是同一变量会有两份,发生冗余,产生不一致性

解决二义性和冗余问题,则使用虚基类,virtual只保留棱型集成中的原始基类一份成员,但虚基类的构造函数初始化就要由最远派生类来初始化,中间各级的初始化虚基类就要被忽略

 

虚函数的作用:

1.为了使用类的指针方便传入参数,可把派生类型转化为基类,因为派生类包含基类,而基类不能转化为派生类。

2.这样做之后,如果有同名函数,在调用时候,传入参数,类型为基类类型,编译会静态绑定,使用基类的函数,而不使用随类型变换的不同的函数

3.解决静态绑定,就是在函数前加 virture,虚函数,不让在编译时候静态绑定,要在运行时候随类型变化而绑定,就达到了我们要的传入类型不同,调用对应类型的函数。

构造函数不能是虚函数,析构函数可以是虚函数

基类中的函数声明为虚函数后,在派生类的同样函数中,可以不声明,编译器也把他看做虚函数。为了可读性,要声明一下

4,析构函数的虚函数

如果希望使用基类指针调用对象的析构函数,则要声明基类的析构函数为虚函数,否则会不正确

5.抽象类:含有纯虚函数的类,virtual fun() = 0;

抽象类不能实例化,可以规定对外接口的统一形式,留给派生类去实现

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值