第11周项目-2.2

it2025-07-14  8

//定义一个名为CPerson类。存在以下 //私有成员:全名、身份证号、性别和年龄 //会员功能:构造函数、析构函数、功能输出信息。 //在此基础上,来自CEmployee分类。派生类CEmployee我们增加了两个新的数据成员,它们被用来代表部门和薪水。

//要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义析构函数,定义输出信息的函数。 //字符串除了用C++扩充的string类型外。按C语言的传统,还能够用char *表示。 //请将类声明中的string所有改为char *后,又一次写一遍程序(此时的差别是,类中有指针成员,构造和析构函数须要考虑深复制的问题了。) #include<iostream> #include<string.h> #include<iomanip> using namespace std; class CPerson { protected:char * m_szName;char * m_szId;int m_nSex;//0:women,1:manint m_nAge; public:CPerson(char * name, char * id, int sex, int age);void Show1();~CPerson(); }; CPerson::CPerson(char * name, char * id, int sex, int age) {m_szName = new char[strlen(name) + 1];strcpy(m_szName, name);m_szId = new char[strlen(id) + 1];strcpy(m_szId , id);m_nSex = sex;m_nAge = age; } void CPerson::Show1() {cout << "name" << setw(20) << "id" << setw(8) << "sex" << setw(6) << "age" << setw(12) << "department" << setw(10) << "salary" << endl;cout << m_szName << setw(20) << m_szId << setw(8);if (m_nSex == 1)cout << "man";elsecout << "women";cout << setw(6) << m_nAge; } CPerson::~CPerson() {delete m_szName;delete []m_szId; } class CEmployee :public CPerson { private:char * m_szDepartment;double m_Salary; public:CEmployee(char * name, char * id, int sex, int age, char * department, double salary) :CPerson(name, id, sex, age){m_szDepartment = new char[strlen(department) + 1];strcpy(m_szDepartment, department);}void Show2();~CEmployee(); }; void CEmployee::Show2() {Show1();cout << setw(12) << m_szDepartment << setw(10) << m_Salary; } CEmployee::~CEmployee() {delete m_szDepartment; } int main() {char  name[10], id[20], department[10];int sex, age;double salary;cout << "input employee's name,id,sex(0:women,1:man),age,department,salary:\n";cin >> name >> id >> sex >> age >> department >> salary;CEmployee employee1(name, id, sex, age, department, salary);employee1.Show2();while (1){}return 0; }

版权声明:本文博主原创文章。博客,未经同意不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4912334.html

最新回复(0)