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 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) {}
};
在第一种情况下,如果我需要更改默认的日期,我只需要更改一次。 在第二个代码块中,我必须更新两次,所以这是更多的工作,而更多的工作带来了更多的错误机会。