C++虚继承与虚函数

版权声明:转载请注明出处 https://blog.csdn.net/HeXiQuan123/article/details/84957902

概念虚表vtbl:虚表是类中虚成员所够成的表。

虚函数:

          vfuc占不占用类存储空间?

          虚函数在类中的表现形式是指针,我们称之为虚指针,是指向虚函数的指消息(2)针,称为vptr

          也就是说对于animal类和bear类而言,其中的虚函数存储在类外空间。

虚继承:

          虚继承继承到的是什么?

          虚继承继承到的其实是BC类的合集,virtual在这里做的就是一种承诺,代表该父类与其他父类可以有同一个爷爷类,如果编译器发现某两个声明virtual的父类(BC)有同一个爷爷(A),就把他们的合集继承给这个类(D)

          为什么使用虚继承?

          假设A是B、C的父类,D是B,C的多重继承类。这时,如果没有虚继承的概念,B,C中公共享有的非静态A类成员在D中就会出现两次,且这两次出现的部分完全相同,浪费空间。         

猜你喜欢

转载自blog.csdn.net/HeXiQuan123/article/details/84957902