C++继承练习

来源:互联网 发布:易观数据来源 编辑:程序博客网 时间:2024/06/15 01:57

C++继承练习
书上对于继承的说明我觉得还不足够细致,自己写段代码对比一下,希望能对同样学习的同学提供帮助。
引入windows.h主要是为了输出时间,方便对继承关系中函数的执行有个相对直观的了解。

#include "stdafx.h"#include <iostream>#include "windows.h"using namespace std;class People{protected:    char name[20],xb[10],id[21];    int num,all,week;    SYSTEMTIME sys; public:People()       {           //name="我是溢出name";           char p[20]="默认name";           strcpy_s(name,p);           num=99;           char p1[10]="默认xb";           strcpy_s(xb,p1);           char p2[21]="默认id";           strcpy_s(id,p2);           all=100;           week=101;           GetLocalTime( &sys );            cout<<"我是People__默认构造函数"<<sys.wMinute<<":"<<sys.wSecond<<":"<<sys.wMilliseconds<<endl;       }public:People(char na[20],int nu,char x[10],char idc[21],int al,int wk)       {           strcpy_s(name,na);           num=nu;           strcpy_s(xb,x);           strcpy_s(id,idc);           all=al;           week=wk;           //SYSTEMTIME sys;            GetLocalTime( &sys );            cout<<"我是People__含参"<<sys.wMinute<<":"<<sys.wSecond<<":"<<sys.wMilliseconds<<endl;       }       virtual void show()       {           cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<endl;       }};//学生class Student: virtual public People{public:    Student(char na[20],int nu,char x[10],char idc[21],int al,int wk)    {        //SYSTEMTIME sys;        GetLocalTime( &sys );        cout<<"我是Student__"<<sys.wMinute<<":"<<sys.wSecond<<":"<<sys.wMilliseconds<<endl;    };};//教师class Teacher:virtual public People{protected:    int teach;public:    Teacher(char na[20],int nu,char x[10],char idc[21],int al,int wk,int tean);    void show()    {        cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<'\t'<<teach<<endl;    }};Teacher::Teacher(char na[20],int nu,char x[10],char idc[21],int al,int wk,int tean):People(na,nu,x,idc,al,wk){    teach=tean;    //SYSTEMTIME sys;    GetLocalTime( &sys );    cout<<"我是Teacher__"<<sys.wMinute<<":"<<sys.wSecond<<":"<<sys.wMilliseconds<<endl;};class Graduate:virtual public Student{protected:    char project[30];public:    Graduate(char na[20],int nu,char x[10],char idc[21],int al,int wk,char pro[30]):Student(na,nu,x,idc,al,wk)    {        strcpy_s(project,pro);    }    void show()    {        cout<<name<<'\t'<<num<<'\t'<<xb<<endl<<id<<'\t'<<all<<'\t'<<week<<'\t'<<project<<endl;    }};int main() {    People pe("People",5,"PeopleXB","Peopleidc",5,6);    pe.show();    //教师    Teacher tr("Teacher",5,"TeacherXB","Teacherid",5,6,7);    tr.show();    //毕业生    Graduate gd("Graduate",5,"GraduateXB","Graduateid",5,6,"pro");    gd.show();    getchar();    return 0;}

其中的继承关系是:

People–》Teacher
People–》Student–》Graduate

1 1