快速建设网站视频,南方数据企业网站管理系统,佛山做外贸网站哪家好,深圳营销策划文章目录一、基本概念二、程序举例1. 虚继承2. 内在逻辑一、基本概念
菱形继承是指存在两个子类继承自同一个基类#xff0c;同时有子类继承这两个子类。
二、程序举例
1. 虚继承
使用虚继承可以解决菱形继承资源浪费的问题#xff0c;因为有两个子类继承基类#xff0c…
文章目录一、基本概念二、程序举例1. 虚继承2. 内在逻辑一、基本概念
菱形继承是指存在两个子类继承自同一个基类同时有子类继承这两个子类。
二、程序举例
1. 虚继承
使用虚继承可以解决菱形继承资源浪费的问题因为有两个子类继承基类子类对象调用两个父类作用域下属性时会发生资源浪费两个子类分别调用基类的构造函数生成两份基类所含有的数据成员。用虚继承只调用一次构造函数和析构所以避免资源浪费。
#include iostreamusing namespace std;class Person
{
public:int Age;
};class Gril : virtual public Person
{};class Boy : virtual public Person
{};class Child : public Gril, public Boy
{};int main()
{Child A;A.Gril::Age 5;A.Boy::Age 10;cout A.Gril::Age endl;cout A.Boy::Age endl;}10
102. 内在逻辑
可以使用VS的开发者工具解释其内在逻辑。 虚继承时虚基类指针vbptr指向虚基类表vbtable虚基类表中存放的就是数据相对于虚基类指针的偏移然后根据偏移找到数据。