[c++]基類對象作為函數參數(賦值相容規則)

來源:互聯網
上載者:User

標籤: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++]基類對象作為函數參數(賦值相容規則)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.