在C++中有两种构造方式赋值初始化和列表初始化,两者底层实现方式不同
在代码中赋值#includeusing namespace std; class Animal { public: Animal() { cout<<"call Animal()"< 其中构造方式如下:
class Dog { public: Dog(Animal &animal) { dog=animal; } private: Animal dog; };输出结果:
一共两步:
1.Animal dog;创建私有对象
2.dog=animal;完成赋值
初始化列表构造方式如下:
class Dog { public: Dog(Animal animal):dog(animal){}; private: Animal dog; };输出结果:
只有一步,用形参annimal来构造数据成员dog
结论用初始化列表构造对象直接调用拷贝构造函数的形参来构造函数参数成员,而不用先构造后赋值
直接就调用拷贝构造函数用形参来构造数据成员
初始化列表构造对象效率更高



