加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:51:42 所属栏目:百科 来源:网络整理
导读:说我有以下代码: 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);} 考虑到结构允许除了使用构造函数之外无法设置轮
说我有以下代码:

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)进行赋值是否存在差异.

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读