1. 程式人生 > >公有繼承中派生類Student對基類Person成員的訪問

公有繼承中派生類Student對基類Person成員的訪問

題目內容:

已知基類Person的定義如下:
class Person
{ char Name[20];
char Sex;
int Age;
public:
void Register(char *name, int age, char sex) ;
void ShowMe();
};
請通過繼承的方法建立一個派生類Student,其中
1.新增的資料成員有:
int Number;
char ClassName[10];
2.新增的成員函式有:
void RegisterStu(char *classname, int number, char *name, int age, char sex)
//對資料成員賦值,並使用基類的Register
void ShowStu() //顯示資料成員資訊,並使用基類的ShowMe
在主程式中建立一個派生類物件,利用已有的成員函式分別顯示派生類物件和基類物件的資料成員。

輸入格式:

學生的班級、學號、姓名、年齡和性別

輸出格式:

先輸出派生類物件的資料成員,依次為 學號、班級、姓名、年齡和性別

再輸出基類的資料成員,依次為姓名、年齡和性別

輸入樣例:

計算機51 85071011 張弓長 18 m

輸出樣例:

85071011 計算機51 張弓長 18 m

張弓長 18 m

#include<iostream>
#include<string.h>
using namespace std;
class Person
{   char Name[20];
    char Sex;
    int Age;
    public:
    void Register(char *name, int age, char sex) ;
    void ShowMe();
};  
void Person::Register(char *name,int age,char sex)
{
	strcpy(Name,name);
	Age=age;
	Sex=sex;
}
void Person::ShowMe()
{
	cout<<Name<<" "<<Age<<" "<<Sex<<endl;
}
class Student:public Person
{
	int Number;
    char ClassName[10];
    public:
    	void RegisterStu(char *classname, int number, char *name, int age, char sex);
		void ShowStu();
};
void Student::RegisterStu(char *classname, int number, char *name, int age, char sex)
{
	strcpy(ClassName,classname);
	Number=number;
	Person::Register(name,age,sex);
}
void Student::ShowStu()
{
	cout<<Number<<" "<<ClassName<<" ";
	Person::ShowMe();
}
int main()
{
	Student stu;
	char clname[10];
	int num;
	char nam[20];
    char sx;
    int ag;
    cin>>clname>>num>>nam>>ag>>sx;
	stu.Register(nam,ag,sx);
	stu.RegisterStu(clname,num,nam,ag,sx);
	stu.ShowStu();
	stu.ShowMe();
	return 0;
}