天天看點

第五次次C++實驗

//第五次實驗:

//定義一個基類Base,該類含有公共成員:

//char name[20];int year;float score及成員函數display:用來顯示name,year,score;

//然後定義兩個子類FirstDer,SecondDer;這兩個子類都是公有繼承Base,

//在FirstDer中增加私有成員char addr[40];在SecondDer

//中增加私有成員char tel[20];

//在兩個子類的display中都實作顯示各自的全部成員變量。要求:

//(1)按以上要求定義基類和子類;

//(2)寫一程式定義以上3個類的對象,然後用一指針依次指向此3個對象來實作display方法的多态性調用

#include<iostream>

using namespace std;

class base{

private:

char name[20];

int year;

float score;

public:

base(char N[],int y,float s)

{

strcpy(name,N);

year=y;

score=s;

}

void display()

{

cout<<"mane:"<<name<<endl<<"year"<<year<<endl<<"score"<<score<<endl;

}

};

class firstder:public base{ //對base繼承(第一次繼承)

private:

char addr[40];

public:

firstder(char N[],int y,float s,char M[]):base(N,y,s) //對于char類型時,指派是通過strcpy(),調用的時候是通過其中的N[]隻需要N就行

{

strcpy(addr,M);

}

void display2()

{

cout<<endl;

display(); //調用base中函數的調用

cout<<"addr:"<<addr<<endl;

}

};

class secondder:public firstder{ //對firstder繼承(第二次繼承)

private:

char tel[20];

public:

secondder(char N[],int y,float s,char M[],char H[]):firstder(N,y,s,M)

{

strcpy(tel,H);

}

void display3()

{

cout<<endl;

display2(); //調用firstder中函數調用

cout<<"tel:"<<tel<<endl;

}

};

int main()

{

base A("lin",23,88.5);

(A).display ();

firstder B("lin",23,88.5,"ping");

B.display2 ();

secondder C("lin",23,88.5,"ping","jun");

C.display3 ();

return 0;

}