28、拷贝初始化和直接初始化

一.当用于类类型对象时,初始化的拷贝形式和直接形式有所不同:直接初始化直接调用与实参匹配的 构造函数,拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对 象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。举例如下:

二.为了提高效率,允许编译器跳过创建临时对象这一步,直接调用构造函数构造要创建的对象,这样 就完全等价于直接初始化了(语句1和语句3等价),但是需要辨别两种情况。

1.当拷贝构造函数为private时:语句3和语句4在编译时会报错

2.使用explicit修饰构造函数时:如果构造函数存在隐式转换,编译时会报错

原文地址:https://www.cnblogs.com/crbhf/p/14922650.html