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;
}