1.虚函数不能被内联。
因为“内联”意味着“在编译时刻用被调用函数的函数体来代替被调用的函数”。但是“虚函数”意味着“运行时刻决定被调用的是哪一个函数”。
2.多重继承一般要求基类为虚基类。
不是虚基类的话,如果一个派生类有多于一条通向基类的继承路径,基类的数据成员会被复制到每一个继承类的对象里,继承类与基类间的每条路径都有一个拷贝。把基类定义为虚基类则可以消除这种重复。
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
原文:http://www.cnblogs.com/codingthings/p/4294609.html