#include <iostream>
#include <string>
using namespace std;
class Student
{
protected:
	int num;
	string name;
public:
	void display();                             //声明输出函数
	Student(int n,string n1);                     //声明构造函数
};
void Student::display()                          //定义输出函数
{
	cout<<"num: "<<num<<endl;
	cout<<"name: "<<name<<endl;
}
Student::Student(int n,string n1)                  //定义构造函数
{
	num=n;
	name=n1;
}
class NewStudent1:public Student                //建立派生类NewStudent1
{
private:
	char sex;
public:
	void display1();                           //声明输出函数
	NewStudent1(int n,string n1,char s);          //声明派生类构造函数
};
void NewStudent1::display1()                   //定义输出函数
{
	display();
	cout<<"sex: "<<sex<<endl;
}
NewStudent1::NewStudent1(int n,string n1,char s):Student(n,n1) //定义派生类构造函数
{
	sex=s;
}
class NewStudent2:public NewStudent1            //建立派生类NewStudent2
{
private:
	int age;
public:
	void display2();                             //声明输出函数
	NewStudent2(int n,string n1,char s,int a);        //声明派生类构造函数
};
void NewStudent2::display2()                     //定义输出函数
{
	display1();
	cout<<"age: "<<age<<endl;
}
NewStudent2::NewStudent2(int n,string n1,char s,int a):NewStudent1(n,n1,s) //定义派生类构造函数
{
	age=a;
}
int main()
{
	NewStudent2 t(2010,"zhangsan",'m',19);         //建立对象t，并赋值
	t.display2();                                //调用输出函数
	return 0;
}

