构造函数和对象的成员变量初始化



假设我有以下代码:

struct Car{
public:
     Car(){}
     Car(int w, int d){
         wheels = w;
         doors = d;
     }
private:
     int wheels;
     int doors;
};
int main(){
     Car *cars = new Car[10];
     cars[0] = {4, 4};
     cars[1] = Car(4, 4);
}

考虑到除了使用构造函数之外,该结构不允许设置车轮和车门的值,那么将值分配给汽车阵列的更好方法是什么?上面代码的最后两行之间有什么区别吗?

我目前正在为学校开发哈希表实现,所提供的c++代码的起始库有一个只有setKey方法而没有setValue方法的Key-Value对类。因此,我基本上必须通过调用构造函数来赋值,并且不确定使用{}或类名(Key,Value)进行赋值是否有区别。

在这种情况下,这两种方法是相同的,因为Carcopy-assignment运算符最终将被调用,默认情况下由编译器提供。

如果你的目的只是分配Car的一些对象,并用一些初始默认值初始化它们,那么为什么不在这种情况下使用std::vector

std::vector<Car> cars(10, Car(4,4));

但上面的方法不会在堆上分配内存,但您可以考虑它。

最新更新