C++多重继承

1.含义:

一个类可以由多个基类共同派生,每个基类的成员在子类中都有一份。

2.格式:

class 子类名:继承方式1 基类名1,继承方式2 基类名2,...,继承方式n 基类名n{
    //子类中新增的成员
};

例:

#include <iostream>
using namespace std;

class A{
    	protected:
    		int a;
    	public:
    		A(){cout<<"A 无参构造"<<endl;}
    		A(int in_a):a(in_a){cout<<"A 有参构造"<<endl;}
};

class B{
	protected:
		int b;
	public:
		B(){cout<<"B 无参构造"<<endl;}
		B(int in_b):b(in_b){cout<<"B 有参构造"<<endl;}
};

//构造函数调用的顺序和此处书写的顺序有关,和初始化表的顺序无关
class C:public A,public B{
	private:
		int c;
	public:
		C(){cout<<"C 无参构造"<<endl;}
		C(int in_a,int in_b,int in_c):A(in_a),B(in_b),c(in_c){
			cout<<"C 有参构造"<<endl;
		}
		void show(){
			cout<<a<<"  "<<b<<"  "<<c<<endl;
		}
};

int main(int argc, const char *argv[])
{
	C c1(10,20,30);
	c1.show();
	return 0;
}

练习:

设计一个圆类 Circle 包含成员变量 半径:r

设计一个桌子类 Table 包含成员变量 高度:h

由上面两个类,共同派生出圆桌类,包含成员 颜色:c

实例化一个圆桌对象,输出该对象的:面积 高度 颜色

#include<iostream>
using namespace std;

class Desk{
    	protected:
    		int h;
    	public:
    		Desk(){}//无参构造
    		Desk(int in_h):h(in_h){}//有参构造
		int get_hight(){
			return h;
		}
};

class Round{
	protected:
		int r;
	public:
		Round(){}//无参构造
		Round(int in_r):r(in_r){}//有参构造
		int get_r(){
			return r;
		}
};

class Roundesk:public Desk,public Round{
	protected: 
		string color;
	public:
		Roundesk(){}
		Roundesk(int h,int r,string in_color):
			Desk(h),Round(r),color(in_color){}
		string get_color(){
			return color;
		}
};

int main(){
	Roundesk rd(150,40,"red");
	cout<<rd.get_hight()<<endl;//只要权限正确 是 public 类外就可以访问
	cout<<rd.get_r()<<endl;
	cout<<rd.get_color()<<endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐的记事本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值