编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > C++ > 复制控制 > C++ 复制控制 合成的复制构造函数

C++ 复制控制 合成的复制构造函数

如果我们没有定义复制构造函数,编译器就会为我们合成一个。与合成的默认构造函数(第 12.4.3 节)不同,即使我们定义了其他构造函数,也会合成复制构造函数。合成复制构造函数的行为是,执行逐个成员初始化,将新对象初始化为原对象的副本。


所谓“逐个成员”,指的是编译器将现在对象的每个非 static 成员,依次复制到正创建的对象。只有一个例外,每个成员搂类型决定了复制该成员的含义。合成复制构造函数直接复制内置类型成员的值,类类型成员使用该类的复制构造函数进行复制。数组成员的复制是个例外。虽然一般不能复制数组,但如果一个类具有数组成员,则合成复制构造函数将复制数组。复制数组时合成复制构造函数将复制数组的每一个元素。


逐个成员初始化最简单的概念模型是,将合成复制构造函数看作这样一个构造函数:其中每个数据成员在构造函数初始化列表中进行初始化。例如,对于我们的 Sales_item 类,它有三个数据成员:

class Sales_item
{
// other members and constructors as before
private:
   std::string isbn;
   int units_sold;
   double revenue;
};

合成复制构造函数如下所示:

Sales_item::Sales_item(const Sales_item &orig):
   isbn(orig.isbn),              // uses string copy constructor
   units_sold(orig.units_sold),  // copies orig.units_sold
   revenue(orig.revenue)         // copy orig.revenue
   {    }                        // empty body



编程学习 C++ 复制控制 合成的复制构造函数 转载请保留此行.谢谢.

C++