繁体   English   中英

struct 成员默认初始化的区别

[英]Difference in default initialization of struct members

struct Date1 {
  int day{1};
  int month{1};
  int year{2000};
};
struct Date2 {
  int day  =1;
  int month =1;
  int year =2000;
};
struct Date3 {
  Date() : day(1), month(1), year(2000) {}
  int day;
  int month;
  int year;
};

struct 成员的默认初始化这三个选项在效率方面有什么区别吗?

struct 成员的默认初始化这三个选项在效率方面有什么区别吗?

不。在 class 中,成员初始化器只是成员初始化列表的语法糖,因此它们都生成相同的代码。

当你有多个构造函数时,真正的好处来自于

struct Date {
  int day{1};
  int month{1};
  int year{2000};
  Date(int year) : year(year) {}
  Date(int year, int month) : year(year), month(month) {}
  Date(int year, int month, int day) : year(year), month(month), day(day) {}
};

相对

struct Date {
  int day;
  int month;
  int year;
  Date(int year) : year(year), month(1), day(1) {}
  Date(int year, int month) : year(year), month(month), day(1) {}
  Date(int year, int month, int day) : year(year), month(month), day(day) {}
};

在第一种情况下,如果我需要更改默认日期,我只需要更改一次。 在第二个代码块中,我必须更新它两次,所以工作量更大,而且工作量越大出错的机会就越大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM