Author: bakari Date: 2012.4.8
装载引用请注明出处:http://www.cnblogs.com/bakari/archive/2012/08/12/2635369.html 谢谢!
虚函数是C++中非常重要的一个概念,它最大的好处是能够触发动态绑定。C++中的函数默认不使用动态绑定,要触发动态绑定,必须满足 两个条件:
第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定;
第二,必须通过基类类型的指针或引用进行函数的调用。具体理解指针或引用在使用继承层次中某一类型的对象时会发生什么,本文不展开讨论,
这两天主要研习了虚函数的具体应用这一块,而它的应用又非常广泛,学MFC的应该能够感受到它的强大,要说是总结也不一定能够总结全,本人目前也处在studying中,所以用10个具体的例子来说明。例子是从难 到易,看到的朋友如果懂前面的可以不用看后面的。每一个例子就是一个类,通过类在内存中的布局来形象地分析虚函数究竟是如何运作的。图表示可能抽象一点,一般带有V开头的表示一个虚函数表,如果是学过编译原理这门课就很容易看懂,没学过的只要懂虚函数的一些机制,耐着性子也是没问题的。每个图示都配有相应的代码。可以对照着代码来看。
1、 虚函数继承的复杂例子
2、 菱形继承无虚拟继承的情况
3、 虚拟继承的简单情况
4、 单一普通继承(无虚函数)
5、 单一继承(含虚函数)(虚函数表只有一个)
6、 多重继承(不含虚函数)
7、 多重继承(一个含虚函数,一个不含虚函数)
8、 多重继承(两个都含有虚函数)
9、 纯虚汗继承
10、 private 的虚函数
虚函数和纯虚函数的区别:
http://blog.csdn.net/hackbuteer1/article/details/7558868