代码实现
定义一个学生类(student):保护成员---姓名、年龄、成绩及相关函数
定义一个老师类(teacher):保护成员---年龄、职称及相关函数
由学生类和老师类共同派生出研究生类(graduate):成员---性别
实例化出研究生类的对象,并输出该对象的所有信息;
#include <iostream>
using namespace std;
class student
{
protected:
string name;
int age;
double score;
public:
student() {} //无参构造
student(string n,int a,double s):name(n),age(a),score(s){} //有参构造
~student(){} //析构函数
void show()
{
cout<<"student name :"<<name<<endl;
cout<<"student age :"<<age<<endl;
cout<<"student score :"<<score<<endl;
}
};
class teacher
{
protected:
int age;
string subject;
public:
teacher() {} //无参构造
teacher(int a,string s):age(a),subject(s){} //有参构造
~teacher(){} //析构函数
void show()
{
cout<<"teacher age: "<<age<<endl;
cout<<"teacher subject: "<<subject<<endl;
}
};
class graduate:public student,public teacher //研究生类继承于学生类和老师类
{
public:
string sex;
graduate(){} //无参构造
graduate(string stu_n,int stu_a,double stu_s,int tea_a,string tea_s,string s):
student(stu_n,stu_a,stu_s),teacher(tea_a,tea_s),sex(s){} //有参构造
~graduate(){} //析构函数
void show()
{
cout<<"graduate name: "<<name<<endl;
cout<<"graduate age: "<<student::age<<endl; //访问继承来的同名成员要指定父类名
cout<<"graduate score: "<<score<<endl;
cout<<"graduate subject: "<<subject<<endl;
cout<<"graduate sex: "<<sex<<endl;
}
};
int main()
{
graduate g("wang",19,77,37,"math","boy"); //调用研究生类的有参构造
g.show();
return 0;
}