本文转自 http://hi.baidu.com/haiksn/blog/item/2c4b2ccba290a119bf09e63b.html 以及陈皓的博客 http://blog.youkuaiyun.com/haoel/article/details/1948051#
多态性:
- 基类指针可以指向派生类对象,在函数调用时,可以通过基类指针调用派生类的成员函数,从而使基类指针具有“多种形态”,故称为多态。
虚函数:
- 是C++中多态性的一个重要体现
- 利用基类指针访问派生类中的成员函数,这种情况下使用虚函数,这种情况下采用的是动态绑定技术
- 在派生类中一般都要实现一个基类中的虚函数,‘覆盖’它,没有‘覆盖的’虚函数是没有什么意义的
动态绑定:
- 基类指针是调用派生类的中的成员函数?还是调用基类中的成员函数?要到程序运行时确定。主要要看指针所指向的对象。
虚拟继承:
- 解决多重继承中派生类成员函数调用模糊问题。
- 比如类A中有一个函数print(),类B继承A,类C继承A,类D继承类B和类C,这个时候,类D中就有两个print函数,一个是从B继承得到的,一个是从C继承得到的,则,类D的对象调用print函数就会出现print模糊的编译错误。解决办法:类B虚拟继承A。类C虚拟继承A,类D继承B,C时,只拷贝A中的数据成员和函数成员一次,再遇到拷贝时候就忽略了!
以下文字摘自深度探索C++对象模型
- C++在布局以及存取时间上的主要额外负担主要是由virtual引起的:虚函数和虚基类(保证即使多次出现在继承体系中,也仅有一个单一而被共享的实体)
本文详细解释了 C++ 中的多态性概念,包括基类指针指向派生类对象、虚函数的使用及动态绑定原理。此外还介绍了虚拟继承的作用及其如何解决多重继承中的函数调用模糊问题。
1088

被折叠的 条评论
为什么被折叠?



