在列表初始化中才算是真正的初始化,而在函数体内的实际上是赋值操作,给成员变量分配内存是在列表初始化中完成的。
明白了这点就可以明白两点:
1.const变量的初始化只能在列表初始化中完成,因为在函数体内是赋值操作,我们不能对const变量进行赋值操作。
2.含有类对象的最好在列表初始化中完成,如果在函数体内进行赋值,实际上是在列表初始化中先调用了类对象默认构造函数,然后在函数体内调用了operator=赋值运算符。另外,若一个函数没有默认构造函数,并且不在列表初始化,那么就会不能通过编译。
C++列表初始化和在函数体内初始化的区别
最新推荐文章于 2023-01-11 02:31:27 发布