深入理解C++的多态

一. 编译器对C++的多态是通过在Class里面插入一个vptr指针,同时生成一个virtual table, 让vptr指向这个virtual table来实现的,那么什么样的Class才有必要设置vptr指针呢?如下图所示:


下面分6种情况讨论

(1)有虚函数的基类


(2) 没有虚函数的基类

(3) 虚继承,基类有vptr

(4)非虚继承,基类没有vptr,派生类没有虚函数

(5)非虚继承,基类没有vptr,派生类有虚函数

 

(6) 非虚继承,基类有vptr


你可能感兴趣的:(C++,c,C#,J#)