如何把两个属性不同的员工存入到同一文件中c++
时间: 2024-02-03 18:11:58 浏览: 92
两个栈空间共享,栈满打印
你可以使用多态(Polymorphism)的概念来实现这个功能,即使用一个基类来定义共同的属性和方法,然后派生出不同的子类,每个子类有自己独特的属性和方法。最后将这些子类对象存入同一个数组或者容器中,进行统一的操作。
例如,你可以定义一个名为Employee的基类,其中包含了所有员工都具备的共同属性和方法(如姓名、工号、工资等等),然后派生出两个子类,比如Manager和Programmer,每个子类有自己特有的属性和方法(如Manager有管理经验,Programmer有编程技能等等),最后将这些子类对象存入同一个数组或者容器中,进行统一的操作。
以下是一个简单的示例代码:
```
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class Employee {
public:
string name;
int id;
double salary;
virtual void printInfo() {} // 基类虚函数,用于实现多态
};
class Manager : public Employee {
public:
int experience;
void printInfo() {
cout << "Name: " << name << ", ID: " << id << ", Salary: " << salary << ", Experience: " << experience << endl;
}
};
class Programmer : public Employee {
public:
string language;
void printInfo() {
cout << "Name: " << name << ", ID: " << id << ", Salary: " << salary << ", Language: " << language << endl;
}
};
int main() {
vector<Employee*> employees; // 声明一个指向Employee基类的指针数组
Manager* m1 = new Manager();
m1->name = "Tom";
m1->id = 1001;
m1->salary = 8000;
m1->experience = 5;
employees.push_back(m1); // 将Manager对象指针存入数组中
Programmer* p1 = new Programmer();
p1->name = "Jerry";
p1->id = 2001;
p1->salary = 6000;
p1->language = "C++";
employees.push_back(p1); // 将Programmer对象指针存入数组中
// 遍历数组,调用多态函数printInfo()
for (int i = 0; i < employees.size(); i++) {
employees[i]->printInfo();
}
// 释放内存
for (int i = 0; i < employees.size(); i++) {
delete employees[i];
}
return 0;
}
```
在上述示例代码中,我们使用了vector容器来存储Employee基类指针,然后分别创建Manager和Programmer对象,并将它们的指针存入vector中。最后,我们使用多态的方式遍历vector中的对象,并调用它们各自特有的printInfo()方法输出信息。
需要注意的是,在程序结束之前,需要手动释放所有动态分配的内存。在示例代码中,我们使用了for循环和delete关键字来逐个释放每个对象的内存。
阅读全文