直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数。复制初始化首先使用指定构造函数创建一个临时对象,然后使用复制构造函数将那个临时对象复制到正在创建的对象。
Screen s1; // 使用默认构造函数初始化s1
Screen s2 = s1; // 隐式调用拷贝构造函数s2
Screen s3(s2); // 显示调用拷贝构造函数s3
因为s2是刚刚被声明要初始化,所以那个等号没有调用拷贝赋值
如果是如下语句,
Screen s1; // 使用默认构造函数初始化s1
Screen s2 = s1; // 隐式调用拷贝构造函数s2
Screen s3(s2); // 显示调用拷贝构造函数s3
s2 = s3;
第四句就会调用拷贝赋值操作,而且s2也不需要析构,直接在原有内存上赋值即可。
转载请注明出处:http://www.jxbyjx.net/article/20230429/741474.html