赋值和初始化列表

C++ 中,赋值和初始化列表的区别有哪些?

赋值和初始化列表的区别

  1. const 成员变量和引用类型的成员变量只能使用初始化列表赋值。

  2. 初始化参数列表在对象初始化时对成员变量赋值一次,构造函数内直接赋值,对成员变量赋值两次,一次是对象构造是用默认值进行赋值,第二次是调用构造函数赋值。这一点对内置类型的区别不是很大。

    但对于非内置类型或者类的组合情况下的话,效率相差还是明显的,用初始化列表的话只需调用一次拷贝构造函数,而在构造函数内进行对象的赋值操作的话,会先调用缺省的构造函数一次,再调用赋值运算符一次。