string dots(10,'.'); //直接初始化
string s(dots); //直接初始化
string s2 = dots; //拷贝初始化
string nine = "99999999"; //拷贝初始化
直接初始化:使用普通的函数匹配即可完成初始化,也就是说直接调用类的构造函数或拷贝构造函数的初始化就是直接初始化。
拷贝初始化:将对象拷贝到正在创建的对象当中,如果还需要还要进行类型转换。
拷贝构造函数不仅在使用=定义变量时会发生,在下列情况下也会发生:
- 将一个对象作为实参传递给一个非引用类型的形参
- 从一个返回类型为非引用类型的函数返回一个对象
- 用花括号列表初始化一个数组中的元素或一个聚合类中的成员