一,问题及代码
/* 文件名称:职员薪水.cpp 作者 :汤俊鹏 日期 :2016.4.22 平台 :visual c++ 6.0 项目名称:基类和派生类的应用 问题详情:定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、输出信息的函数 。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。 要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义输出信息的函数。 代码如下: */ #include<iostream> #include<string> #include<iomanip> using namespace std; class CPerson { protected: string m_szName; string m_szId; int m_nSex;//0:女,1:男 int m_nAge; public: CPerson(string name,string id,int sex,int age); void Show1(); }; CPerson::CPerson(string name,string id,int sex,int age) { m_szName=name; m_szId=id; m_nSex=sex; m_nAge=age; } void CPerson::Show1() { cout<<std::right<<setw(10)<<m_szName<<std::right<<setw(10)<<m_szId; if(m_nSex==0) cout<<std::right<<setw(10)<<"女"; else cout<<std::right<<setw(10)<<"男"; cout<<std::right<<setw(10)<<m_nAge; } class CEmployee:public CPerson { private: string m_szDepartment; double m_Salary; public: CEmployee(string name,string id,int sex,int age,string department,double salary); void Show2(); }; CEmployee::CEmployee(string name,string id,int sex,int age,string department,double salary):CPerson(name,id,sex,age) { m_szDepartment=department; m_Salary=salary; } void CEmployee::Show2() { cout<<std::right<<setw(10)<<"姓名"<<std::right<<setw(10)<<"ID"<<std::right<<setw(10)<<"性别"<<std::right<<setw(10)<<"年龄"<<std::right<<setw(10)<<"部门"<<std::right<<setw(10)<<"薪水"<<endl; CPerson::Show1(); cout<<std::right<<setw(10)<<m_szDepartment<<std::right<<setw(10)<<m_Salary<<endl; } int main() { string name,id,department; int sex,age; double salary; cout<<"请输入雇员的姓名,ID,性别(0:女,1:男),年龄,部门,薪水:\n"; cin>>name>>id>>sex>>age>>department>>salary; CEmployee employee1(name,id,sex,age,department,salary); employee1.Show2(); return 0; }二,运行结果
三,心得体会
这次实验,让我深切体会到派生和继承的使用方法,对于派生类函数调用基类函数,派生类构造函数调用基类构造函数,这两点开始卡住,查阅后才知道具体怎么用,实践才能掌握。
四,知识点总结
要了解基类和派生类相关基础知识,熟悉派生类构造函数和派生类成员函数的使用,注意输出的格式控制(靠右对齐)。