(補)第12週実験報告(2)
//*(プログラムヘッダコメント開始)*プログラムの著作権とバージョン宣言部分*Copyright(c)2011、煙台大学コンピュータ学部学生*All rights reserved.*ファイル名:*作成者:王琦*完成日:2012年5月7日*バージョン番号:*タスクおよび解法の説明部分:*入力説明:*問題説明:(教材P 394練習問題9)Teacher(教師)クラスとCadre(幹部)クラスをそれぞれ定義し、多重継承方式でこの2つのクラスから新しいクラスTeacher_Cadre(教師兼幹部)を派生させる.要求:(1)2つのベースクラスに名前、年齢、性別、住所、電話などのデータメンバーが含まれる.(2)Teacherクラスにはデータメンバーtitle(職名)も含まれ、Cadreクラスにはデータメンバーpost(役職)も含まれ、Teacher_Cadreクラスにはデータメンバーwages(給与)も含まれている.(3)2つのベースクラスの名前、年齢、性別、住所、電話などのデータメンバーに対して同じ名前を使用し、これらのデータメンバーを参照するときに役割ドメインを指定する.(4)クラス体にメンバー関数を宣言し、クラス外にメンバー関数を定義する.(5)派生クラスTeacher_Cadreのメンバー関数showでTeacherクラスのdisplay関数を呼び出し、名前、年齢、性別、職名、住所、電話を出力し、cout文で役職と給与を出力する.*プログラム出力:*プログラムヘッダのコメント終了
プログラムコード:
実行結果:
name:wang-li age:23 sex:m addr:Beijing tel:123456 title:post:teacher wage:2500任意のキーを押して続行してください.
プログラムコード:
#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
Teacher(string nam,int ag,char s,string add,string t,string tit);
void display();
protected:
string name;
int age;
char sex;
string addr;
string tel;
string title;
};
Teacher::Teacher(string nam,int ag,char s,string add,string t,string tit):name(nam),age(ag),sex(s),addr(add),tel(t),title(tit){}
void Teacher::display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"addr:"<<addr<<endl;
cout<<"tel:"<<tel<<endl;
cout<<"title:"<<title<<endl;
}
class Cadre
{
public :
Cadre(string nam,int ag,char s,string add,string t,string p);
void display();
protected:
string name;
int age;
char sex;
string addr;
string tel;
string post;
};
Cadre::Cadre(string nam,int ag,char s,string add,string t,string p):name(nam),age(ag),sex(s),addr(add),tel(t),post(p){}
void Cadre::display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"addr:"<<addr<<endl;
cout<<"tel:"<<tel<<endl;
cout<<"post:"<<post<<endl;
}
class Person:public Teacher,public Cadre
{
public:
Person(string nam,int ag,char s,string add,string t,string tit,string p,float w);
void show();
private:
float wage;
};
Person::Person(string nam,int ag,char s,string add,string t,string tit,string p,float w):Teacher(nam,ag,s,add,t,tit),Cadre(nam,ag,s,add,t,p),wage(w){}
void Person::show()
{
Teacher::display();
cout<<"post:"<<Cadre::post<<endl;
cout<<"wage:"<<wage<<endl;
}
void main()
{
Person p1("wang-li",23,'m',"Beijing","123456","","teacher",2500);
p1.show();
system("pause");
}
実行結果:
name:wang-li age:23 sex:m addr:Beijing tel:123456 title:post:teacher wage:2500任意のキーを押して続行してください.