1. 定义一个学生类(Student):私有成员属性(姓名、年龄、分数)、成员方法(无参构造、有参构造、析构函数、show函数)
2. 再定义一个党员类(Party):私有成员属性(党组织活动,组织),成员方法(无参构造、有参构造、析构函数、show函数)。
3. 由这两个类共同派生出学生干部类,私有成员属性(职位),成员方法(无参构造、有参构造、析构函数、show函数),使用学生干部类实例化一个对象,然后调用其show函数进行测试
#include <iostream>
using namespace std;
//定义一个学生类
class Student
{
private:
string name; //姓名
int age; //年龄
float score; //分数
public:
//无参构造
Student() {cout << "Student::无参构造" <<endl;}
//有参构造
Student(string n,int a,float s):name(n),age(a),score(s)
{
cout << "Student::有参构造" <<endl;
}
//析构函数
~Student() {cout << "Student::析构函数" <<endl;}
void show()
{
cout<<"name = "<<name<<endl;
cout<<"age = "<<age<<endl;
cout<<"score = "<<score<<endl;
}
};
//定义党员类
class Party
{
private:
string activity; //活动
string organization; //组织
public:
//无参构造
Party() {cout << "Party::无参构造" <<endl;}
//有参构造
Party(string a,string o):activity(a),organization(o)
{
cout << "Party::有参构造" <<endl;
}
//析构函数
~Party() {cout << "Party::析构函数" <<endl;}
void show()
{
cout<<"activity = "<<activity<<endl;
cout<<"organization = "<<organization<<endl;
}
};
//学生类和党员类共同衍生出学生干部类
class Cadre:public Student,public Party
{
private:
string position; //职位
public:
//无参构造
Cadre() {cout << "Cadre::无参构造" <<endl;}
//有参构造
Cadre(string n,int a1,float s,string a2,string o,string p):Student(n,a1,s),Party(a2,o),position(p)
{
cout << "Cadre::有参构造" <<endl;
}
//析构函数
~Cadre() {cout << "Cadre::析构函数" <<endl;}
void show()
{
//cout<<"name = "<<name<<endl; //私有成员,继承后子类无法访问
//cout<<"age = "<<age<<endl;
//cout<<"score = "<<score<<endl;
//cout<<"activity = "<<activity<<endl;
//cout<<"organization = "<<organization<<endl;
Student::show();
Party::show();
cout<<"position = "<<position<<endl;
}
};
int main()
{
Cadre c("WYJ",20,90,"无","无","无");
c.show();
return 0;
}
运行结果:
思维导图: