一、圆类派生
#include<iostream>
using namespace std;
#define pi 3.1415926
class circle
{
float r;
public:
circle(float a=0)
{
r=a;
cout<<"circle constructor"<<endl;
}
~circle(){cout<<"circle destructor"<<endl;}
float getr(){return r;}
float area();
void display();
};
float circle::area() {return r*r*pi;}
void circle::display() {cout<<"r="<<r<<endl;}
class cylinder:public circle
{
float hight;
public:
cylinder(float r1, float hight1):circle(r1)
{
hight=hight1;
cout<<"cylinder consturctor"<<endl;
}
~cylinder(){cout<<"cylinder destructor"<<endl;}
float volume() {return area()*hight;}
void display() {cout<<"base r="<<getr()<<"\t inherit hight="<<hight<<endl;}
};
void main()
{
cylinder a(2,4);
a.circle::display();
a.display();
cout<<"S="<<a.area()<<endl;
cout<<"volume="<<a.volume()<<endl;
}
二、人员类派生
#include<iostream>
using namespace std;
#include<string.h>
class person
{
int id;
char name[20];
char sex[6];
int age;
public:
person(int a, char b[], char c[], int d)
{
id=a;strcpy(name,b);strcpy(sex,c);age=d;
cout<<"person constructor"<<endl;
}
~person(){cout<<"person destructor"<<endl;}
void displayp()
{
cout<<"id name sex age\n";
cout<<id<<'\t'<<name<<'\t'<<sex<<'\t'<<age<<endl;
}
};
class teacher:public person
{
int classtime;
float fund;
public:
teacher(int id1,char name1[],char sex1[],int age1,int classtime1, float fund1):person(id1,name1,sex1,age1)
{
classtime=classtime1;
fund=fund1;
cout<<"teacher constructor"<<endl;
}
~teacher(){cout<<"teacher destructor"<<endl;}
void display()
{
cout<<"id name sex age classtime fund\n";
displayp();
cout<<classtime<<'\t'<<fund<<endl;
}
};
void main()
{
teacher a(20171213,"张三","man",21,20,20000);
a.display();
}
三、学生、课程类共同派生
#include<iostream>
using namespace std;
#include<string.h>
class student
{
int id;
char name[20];
char sex[6];
int age;
public:
student(int a,char *b,char *c,int d)
{
id=a;strcpy(name,b);strcpy(sex,c);age=d;
cout<<"student constructor"<<endl;
}
~student(){cout<<"student destructor"<<endl;}
void stu_display()
{
cout<<"id name sex age\n";
cout<<id<<'\t'<<name<<'\t'<<sex<<'\t'<<age<<endl;
}
};
class course
{
int id;
char name[20];
int period;
public:
course(int a, char *b, int c)
{
id=a;strcpy(name,b);period=c;
cout<<"course constructor"<<endl;
}
~course(){cout<<"course destructor"<<endl;}
void cou_display()
{
cout<<"id name period"<<endl;
cout<<id<<'\t'<<name<<'\t'<<period<<endl;
}
};
class sel_cou:public course,public student
{
float grade;
public:
sel_cou(int a,char *b,char *c,int d,int a1, char *b1, int c1,float e):student(a,b,c,d),course(a1,b1,c1)
{
grade=e;
cout<<"sel_cou constructor\n";
}
~sel_cou(){cout<<"sel_cou destructor"<<endl;}
void display()
{
stu_display();
cou_display();
cout<<"grade\n"<<grade<<endl;
}
};
void main()
{
sel_cou a(20150989,"张三","man",25,1234,"math",48,99);
a.display();
}