当前位置: 首页 > news >正文

C++多继承

       可以用多个基类来派生一个类。
在这里插入图片描述
格式为:

class 类名:类名1,…, 类名n
{
private: … ; //私有成员说明;
public: … ; //公有成员说明;
protected: … ; //保护的成员说明;
};

class D: public A, protected B, private C
{
…//派生类中新增加成员
};
示例:

#include <iostream>
using namespace std;

class A
{
public:
	A(int a)
	{
		cout << "调用基类A:构造函数.\n";
		x = a;
	}
	~A()
	{
		cout << "调用基类A:析构函数.\n";
	}

private:
	int x;
};

class B
{
public:
	B(int a)
	{
		cout << "调用基类B:构造函数.\n";
		y = a;
	}
	~B()
	{
		cout << "调用基类B:析构函数.\n";
	}

private:
	int y;
};

class C :public A, public B
{
public:
	C(int a,int b):A(a),B(100)
	{
		cout << "调用派生类C:构造函数.\n";
		z = a;
	}
	~C() 
	{
		cout << "调用派生类C:析构函数.\n";
	}

private:
	int z;
};


int main()
{
	C obj(10, 50);


	return 0;
}

初始化基类成员

       构造函数不能被继承,派生类的构造函数必须调用基类的构造函数来初始化基类成员基类子对象。
派生类构造函数的调用顺序如下:

  • 基类的构造函数
  • 派生类的构造函数

示例:

#include <iostream>
using namespace std;

class A
{
public:
	A()
	{
		cout << "调用基类A:默认构造函数.\n";
	}
	A(int a)
	{
		cout << "调用基类A:构造函数.\n";
		x = a;
	}
	~A()
	{
		cout << "调用基类A:析构函数.\n";
	}

private:
	int x;
};

class B
{
public:
	B(int a)
	{
		cout << "调用基类B:构造函数.\n";
		y = a;
	}
	~B()
	{
		cout << "调用基类B:析构函数.\n";
	}

private:
	int y;
};

class C :public A, public B
{
public:
	C(int a, int b) :A(a), B(100)
	{
		cout << "调用派生类C:构造函数.\n";
		z = a;
	}
	~C()
	{
		cout << "调用派生类C:析构函数.\n";
	}

private:
	int z;
	A obj1,obj2;
};


int main()
{
	C obj(10, 20);

	return 0;
}
http://www.dtcms.com/a/106617.html

相关文章:

  • 【抓包工具】win 10 / win 11:Charles 下载、安装、配置(快捷方式、默认端口、登录、https 证书)
  • 【git】VScode修改撤回文件总是出现.lh文件,在 ​所有 Git 项目 中全局忽略特定文件
  • MacOS 的 AI Agent 新星,本地沙盒驱动,解锁 macOS 操作新体验!
  • 地表-地下水系统交互模拟关键技术突破:SWAT-MODFLOW耦合模型构建、验证及多情景预测研究
  • 离线语音识别 ( 小语种国家都支持)可定制词组
  • 项目管理管什么?理什么?
  • 《云端都市:云计算如何重塑未来城市形态》
  • spikingjelly:使用单层全连接 SNN 识别 MNIST
  • Java UnsupportedOperationException 深度解析及解决方案
  • 在HarmonyOS NEXT 开发中,如何指定一个号码,拉起系统拨号页面
  • Python从入门到精通4:计算机网络及TCP网络应用程序开发入门指南
  • JuiceFS vs HDFS,最简单的 JuiceFS 入门
  • Muduo网络库实现 [八] - Acceptor模块
  • 【Harmony OS】TypeScrip基础
  • 小米汽车就 SU7 事故回应六点问题,称「事故车起火并非自燃」、「无法分析车门能否打开」,如何看待?
  • 从头开发一个Flutter插件(二)高德地图定位插件
  • [GESP 202503 二级 T2] 时间跨越
  • Docker 镜像导出与导入:export/import vs save/load
  • AI战略群与星际之门:软银AI投资版图计划深度解析
  • AI辅助下基于ArcGIS Pro的SWAT模型全流程高效建模实践与深度进阶应用
  • deepseek-r1 api部署和镜像
  • OpenCV 图形API(9)用于执行矩阵与标量之间的逐元素除法操作函数divC()
  • 获取oracle表大小
  • 《系统分析师开篇》
  • 电动打气泵方案,多种充气模式的充气泵方案【天吉智芯】
  • 从商汤科技年报,看一家AI企业的确定性叙事
  • 山东港口船货通平台:赋能航运产业升级,构建智慧物流新生态
  • 二分查找算法精讲
  • Mysql 的binlog日志的优缺点
  • 【多通道数据采集系统:汽车测试江湖的“兵器谱”——硬核分类与实战秘籍】