虚函数的类
2014-04-30 10:17
190 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shawenkl/article/details/24772453
这是带虚函数的类:
你认为这一计划将输出?
让我们看看这个过程是如何。首先,我们实例化一个类的对象。rbase是一个指针,我们设置为指向的对象的一部分。最后,我们称rbase getname()。rbase getname()。计算结果为::getname()。然而,一个::getname()是虚拟的,所以编译器将检查所有A和C之间的类是否能找到一个更衍生得到的匹配。首先,它检查B::getname(),并找到一个匹配。然后检查C::getname()和找到一个更好的匹配。它不检查D::getname()因为我们原来的对象是一个C,不是一个D。因此,rbase。getname()解决C::getname()。
因此,我们的程序的输出:
rbase是C
一个更复杂的例子
让我们看看另一个动物的例子我们的工作与在上一课。这里的原始类:
请注意,我们不做动物::getname()虚拟。这是因为getname()是从来没有在任何派生类中重写,因此没有必要。
现在,使用虚拟speak()功能,下面的功能应正常工作:
事实上,这个程序产生的结果:
弗莱德说,喵
嘉宝说汪
当canimal。speak()评估程序,指出它是一个虚函数。在的情况下,ranimal指着一只猫的动物部分对象,程序会在所有的动物和猫之间的类是否能找到更多的衍生功能。在这种情况下,它发现猫::speak()。在的情况下,ranimal指出,狗的动物部分对象,程序解析函数的调用speak()狗:。
同样的,下面的数组的例子现在正常工作:
相关文章推荐
- 虚函数、纯虚函数详解
- 虚函数机制
- 析构函数定义为虚函数
- 谭浩强版C++实例 第六章 多态性与虚函数(4个)
- 在什么情况下应当声明虚函数
- 类对象内存布局,虚函数,虚拟继承和多重继承的实现
- 虚函数与动态绑定的那点事
- C++析构函数为什么要为虚函数
- C++虚函数与虚析构函数
- 关于虚函数的知识点
- 虚函数和纯虚函数
- C++ - 虚函数(virtual function)缺省参数的异常表现 及 正确使用方法
- C++ - 类的虚函数\虚继承所占的空间
- 包含虚函数的类不能构建对象
- 什么是虚函数?
- 不能重载虚函数,右建加入虚函数显示:no virtual functions available to be overridden,
- 立体类的面积和体积--虚函数
- 析构函数什么情况下要定义为虚函数
- C++中的虚函数(virtual function)
- C++学习笔记27,虚函数的工作原理