C++中什么时候调用复制构造函数
复制构造函数是使用同一类的另一个对象来初始化对象的成员函数。复制构造函数主要在创建一个现有对象的副本作为新对象时调用。
在C++中,复制构造函数可能会被以下情况调用:
1) 当通过值返回类的对象时。
2) 当传递类的对象(作为参数)值给函数时。
3) 当基于同一类的另一个对象构造对象时。
4) 当编译器生成临时对象时。
示例:
输出
但不保证在所有这些情况下都会调用复制构造函数,因为C++标准允许编译器在某些情况下优化复制,例如 返回值优化 (有时称为 RVO )。
注: 如果类中没有定义复制构造函数,C++编译器会隐式提供复制构造函数。