说我有以下代码:
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)进行赋值是否存在差异。
答案 0 :(得分:0)
在这种情况下,两种方式都是相同的,因为默认情况下将调用copy-assignment
的最终Car
运算符,该运算符由编译器提供。
如果您的目的只是分配Car
的某些对象并使用某些初始默认值初始化它们,那么为什么在这种情况下不使用std::vector
,
std::vector<Car> cars(10, Car(4,4));
但是上面的方法不会在堆上分配内存,但你可能会考虑它。