通过对象数组的引用传递

Pass by reference for array of objects

本文关键字:引用 数组 对象      更新时间:2023-10-16

>我在一个名为 Employee 的类中工作,我正在尝试创建一个将数组作为参数的构造函数

class Employee 
{ 
Employee * array[9];
public:
Employee(Employee * arr[]);
}

但这行不通,所以我正在考虑通过引用传递arr,除了我不能只是添加和在arr之前......有什么想法吗?谢谢

如果您只想传递 Employee 类型的数组,那么您会这样做

Employee (Employee arr[])Employee (Employee * arr)

如果你想把它一个指针数组传递给员工对象,那么你这样做

Employee (Employee * arr[])Employee (Employee ** arr)

这些都将起作用。

此外,数组始终通过引用传递。

如果要传入数组,则还需要传入大小:

class Employee
{
public:
    Employee(Employee* pE, std::size_t size) { ... }
};

因为您将数组降级为指针,否则将不知道大小。 当您传递指针时,不需要通过引用传递它,因为您可以更改元素的值,它将指向相同的内存位置(也就是说,它与通过引用传递没有什么不同)。

不过,使用 std::arraystd::vector 会是一个更好的解决方案:

class Employee
{
public:
    Employee(const std::vector<Employee>& vec) { ... }
};

旁注:我不确定为什么你有一个 Employee 对象,它需要一个 Employees 数组来构造它。 这似乎是设计问题的迹象。