继承和多态和虚函数——C++学习笔记二

A->B

A>C

B,C->D

最远基类:没有父类(A)。

最近派生类:没有子类(D)。

问题:A被多次继承,在D中产生二义性。

解决方法:

1.    类的域名限定符。B::a。

2.    同名覆盖,最近派生类如果出现的成员名和基类出现的成员名相同就出现覆盖。

3.    虚继承。最远基类第一次被继承的过程中加 virtual。

虚继承的现象:

       最远基类的构造函数由最近派生类驱使。引入虚指针

造成二义性:函数重载,默认参数,多次继承。

类型继承原则:

1.    基类指针可以指向派生类对象。

       2.    派生类对象可以为基类对象赋值或初始化。

       3.    派生类对象可以为基类所引用初始化。

动态联编和静态联编:

1.        静态联编:在程序编译时,确定了成员的类型。

2.        动态联编:在编译时,不确定成员的类型;而在程序运行时确定。在编译阶段,只提供函数表的入口地址。

动态联编->多态->虚函数->虚函数表

★  虚函数表也可以打破封装。

多态:

1.        定义:相同的消息被不同的对象所接收,产生不同的行为。

虚函数调用的机制:

1.      基类的指针或者是基类的引用来调用虚函数。

虚析构函数:

防止内存泄露和多重free

抽象类:

       1.    抽象类可以实现接口。主要功能是用来被继承。

       2.    在类的声明里有至少一个纯虚函数。纯虚函数是抽象类的充分非必要条件。

       3.    抽象类只能声明创建和引用。不能创建对象。

       纯虚函数:

              1.    声明方式:virtual 函数首部 = 0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值