C++ 虚拟继承

本文介绍了虚基类的概念及其如何解决多重继承中同名数据成员的二义性问题,通过使用虚基类可以确保只存在一个数据成员的拷贝,从而避免数据不一致,并节省内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 概念:解决不同途径继承来的同名的数据成员内存有不同的拷贝函数造成数据不一致的问题,将共同的基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数也只有一个映射。
  •  解决问题:解决了二义性问题,节省了内存,避免了数据不一致的问题。
  •  使用情景:当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。     
  • 语法

        class 派生类: virtual 基类1,virtual 基类2,...,virtual 基类n

        {

..               .//派生类成员声明

        };

  • 执行顺序

       首先执行虚基类的构造函数,多个虚基类的构造函数按照被继承的顺序构造;

       首先执行虚基类的构造函数,多个虚基类的构造函数按照被继承的顺序构造;

       执行基类的构造函数,多个基类的构造函数按照被继承的顺序构造;

       执行成员对象的构造函数,多个成员对象的构造函数按照申明的顺序构造;

       执行派生类自己的构造函数;

       析构以与构造相反的顺序执行;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值