C++ 创建employee类对象数组并通过构造函数赋值成员属性的方法
C++对象数组初始化实现方案
1. 为employee类添加构造函数
你需要给类新增接收姓名、工号两个参数的构造函数,创建对象时可直接完成成员赋值,这里同时优化了成员方法的const正确性,代码如下:
#include <iostream> #include <string> using std::string; class employee { private: string name; string idNumber; public: // 新增带参构造函数 employee(string n, string id): name(std::move(n)), idNumber(std::move(id)) {} void setName(string); void setIDnumber(string); // get方法添加const修饰,允许const对象调用 string getName() const; string getIDnumber() const; }; // 成员方法参考实现,你也可以保留原有逻辑 void employee::setName(string n) { name = std::move(n); } void employee::setIDnumber(string id) { idNumber = std::move(id); } string employee::getName() const { return name; } string employee::getIDnumber() const { return idNumber; }
2. 初始化对象数组
C++支持用花括号初始化列表,在定义数组时直接为每个元素传入构造参数,不需要后续单独赋值:
const int numEmployees = 3; int main() { // 按顺序给3个员工对象传入构造参数 employee employeeInfo [numEmployees] = { {"Tom Jones", "123456"}, {"James Blyth", "QE123"}, {"Alice Smith", "AB789"} // 第三个员工参数可按需求修改 }; // 示例:遍历展示所有员工信息 for(int i = 0; i < numEmployees; i++) { std::cout << "员工" << i+1 << ":姓名-" << employeeInfo[i].getName() << ",工号-" << employeeInfo[i].getIDnumber() << std::endl; } return 0; }
补充说明
- 如果需要统一管理姓名字段,直接遍历
employeeInfo数组,调用对应的getName()/setName()方法即可批量读写所有员工的姓名 - 构造函数参数可以改为
const string&类型,减少不必要的字符串拷贝,性能更优 - 如果你后续需要动态调整员工数量,更推荐使用
std::vector<employee>代替普通数组,扩容和管理更灵活
内容的提问来源于stack exchange,提问作者David___S__
相关产品推荐
相关产品推荐

