[英]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.