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

时间:2016-04-14 03:42:48

标签: c++

说我有以下代码:

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 ++代码的起始基础有一个Key-Value对类,只有一个setKey方法而没有setValue方法。所以我基本上必须通过调用构造函数来赋值,并且不确定使用{}或 classname (Key,Value)进行赋值是否存在差异。

1 个答案:

答案 0 :(得分:0)

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

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

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

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