標籤:c++ 繼承 賦值相容
編程處理教師的基本情況。要求:
1、定義一個“person”類,用來儲存及處理人的姓名、性別、年齡,成員函數自定;
2、定義“teacher”類,公有繼承“person”類用來儲存教師所在學院、所學專業、學曆、學位、職稱、教齡等,成員函數自定。
3、處理常式,主要包括:
⑴顯示姓名、性別、年齡函數:既能顯示person對象的姓名、性別、年齡,又能顯示teacher對象的姓名、性別、年齡(用person引用對象為形參);
⑵顯示教師所在學院、所學專業、學曆、學位、職稱、教齡的函數;
⑶ main()函數:分別定義persor對象及teacher對象,並輸入不同對象相關值,調用成員函數設定對象的值,調用顯示函數顯示相應值。
#ifndef __person__person__#define __person__person__#include<iostream>using namespace std;#include<string.h>class person{protected: char *name; char *sex; int age;public: person(char *na,char *se,int ag); void set_person(char *na,char *se,int ag); char* get_name() {return name;} char* get_sex() {return sex;} int get_age() {return age;} void print(); ~person() {delete []name;delete []sex;}};person::person(char *na,char *se,int ag){ name=new char[strlen(na)+1]; strcpy(name,na); sex=new char[strlen(se)+1]; strcpy(sex,se); age = 0;}void person:: set_person(char *na,char *se,int ag){ name=new char[strlen(na)+1]; strcpy(name,na); sex=new char[strlen(se)+1]; strcpy(sex,se); age=ag;}void person:: print(){ for(int i = 0;i<=strlen(name);i++) { cout<<name[i]; } cout<<endl; for(int i = 0;i<=strlen(sex);i++) { cout<<sex[i]; } cout<<endl; cout<<"age:"<<age<<endl; cout<<endl;}#endif /* defined(__person__person__) */
#ifndef person_teacher_h#define person_teacher_h#include"person.h"class teacher:public person{protected: char *college;//學院 char *speciality;//專業 char *school;//學曆 char *degree;//學位 char *title;//職稱 int teacherage;//教齡public: teacher(char *na,char* se,int ag,char *co,char *sp,char* sc,char* de,char* ti,int te); void set_t(char *na,char* se,int ag,char *co,char *sp,char* sc,char* de,char* ti,int te); char* get_college() {return college;} char* get_speciality() {return speciality;} char* get_school() {return school;} char* get_degree() {return degree;} char* get_title() {return title;} int get_teacher_age() {return teacherage;} ~teacher(); void print_t(person&p);};teacher::teacher(char *na,char* se,int ag,char *co,char *sp,char* sc,char* de,char* ti,int te):person(na,se,ag){ //person::set_person(na, se, ag); college=new char[strlen(co)+1]; strcpy(college,co); speciality=new char[strlen(sp)+1]; strcpy(speciality,sp); school=new char[strlen(sc)+1]; strcpy(school,sc); degree=new char[strlen(de)+1]; strcpy(degree,de); title=new char[strlen(ti)+1]; strcpy(title,ti); teacherage =0;}void teacher:: set_t(char *na,char* se,int ag,char *co,char *sp,char* sc,char* de,char* ti,int te){ name=new char[strlen(na)+1]; strcpy(name,na); sex=new char[strlen(se)+1]; strcpy(sex,se); age=ag; college=new char[strlen(co)+1]; strcpy(college,co); speciality=new char[strlen(sp)+1]; strcpy(speciality,sp); school=new char[strlen(sc)+1]; strcpy(school,sc); degree=new char[strlen(de)+1]; strcpy(degree,de); title=new char[strlen(ti)+1]; strcpy(title,ti); teacherage =te;}teacher::~teacher(){ delete []college; delete []speciality; delete []school; delete []degree; delete [] title;}void teacher:: print_t(person &p){ p.print(); cout<<"-------------------"<<endl; for(int i = 0;i<=strlen(college);i++) { cout<<college[i]; } cout<<endl; for(int i = 0;i<=strlen(speciality);i++) { cout<<speciality[i]; } cout<<endl; for(int i = 0;i<=strlen(school);i++) { cout<<school[i]; } cout<<endl; for(int i = 0;i<=strlen(degree);i++) { cout<<degree[i]; } cout<<endl; for(int i = 0;i<=strlen(title);i++) { cout<<title[i]; } cout<<endl; cout<<teacherage<<endl; cout<<endl;}void fun(person &p){ p.print(); cout<<endl;}#endif
#include "teacher.h"//#include"person.h"int main(){ person p("s","nv",22); teacher T("張老師","女",44,"計科","網路","本科","博士","教授",20); T.print_t(p); T.set_t("張老師","女",44,"計科","網路","本科","博士","教授",20); T.print_t(p); cout<<T.get_name()<<endl; cout<<T.get_sex()<<endl; cout<<T.get_age()<<endl; cout<<T.get_college()<<endl; cout<<T.get_degree()<<endl; cout<<T.get_school()<<endl; cout<<T.get_speciality()<<endl; cout<<T.get_title()<<endl; cout<<T.get_teacher_age()<<endl; cout<<"--------------------"<<endl; fun(p); return 0;}//int main()//{// person p("s","nv",22);// p.print();// p.set_person("w","female",44);// p.print();// return 0;//}
[c++]基類對象作為函數參數(賦值相容規則)