多态
多态机制的实现就是通过虚函数。
虚函数的原理 虚函数表
单个类的虚函数表
以上结论通过以下代码测试:
运行结果:
证明内存就是如上分布。
通过调用命令行同样可以证得此结论:
使用继承的虚函数表
此时:
代码验证:
运行结果:
使用多重继承的虚函数表
vs中,多重继承时,会继承多个虚函数表(实际是虚表指针,存放顺序按照继承类的声明顺序来);
自己本身的虚函数地址会写入第一个虚函数表的最后;
自己本身的数据成员会写在对象内存最后。
代码验证:(关键代码)
结果:
命令行查看:
final
用来修饰类,让该类不能被继承
理解:使得该类终结!
用来修饰类的虚函数,使得该虚函数在子类中,不能被重写
理解:使得该功能终结!
override
override仅能修饰虚函数
作用:
1.提示程序的阅读者,这个函数是重写父类的功能。
2.防止程序员在重写父类的函数时,把函数名写错。
遗失的子类析构函数
运行结果:
case3会导致内存泄漏。解决方法:将父类的析构函数定义成虚函数,改动代码如下:
运行结果:
此虚函数区别于一般的虚函数,这不是为了重新实现函数功能,而是为了能够动态析构。
纯虚函数和抽象类
标签:函数,继承,代码,多态,析构,父类 From: https://www.cnblogs.com/ylww/p/16760520.html