C++中什么时候调用复制构造函数

C++中什么时候调用复制构造函数

复制构造函数是使用同一类的另一个对象来初始化对象的成员函数。复制构造函数主要在创建一个现有对象的副本作为新对象时调用。

在C++中,复制构造函数可能会被以下情况调用:

1) 当通过值返回类的对象时。

2) 当传递类的对象(作为参数)值给函数时。

3) 当基于同一类的另一个对象构造对象时。

4) 当编译器生成临时对象时。

示例:

// CPP程序演示如何使用复制构造函数
#include <iostream>
#include <stdio.h>
using namespace std;
  
class storeVal {
public:
    // 构造函数
    storeVal() {}
    // 复制构造函数
    storeVal(const storeVal& s)
    {
        cout << "调用复制构造函数" << endl;
    }
};
  
// Driver code
int main()
{
    storeVal obj1;
    storeVal obj2 = obj1;
    getchar();
    return 0;
}  
C++

输出

调用复制构造函数
C++

但不保证在所有这些情况下都会调用复制构造函数,因为C++标准允许编译器在某些情况下优化复制,例如 返回值优化 (有时称为 RVO )。

注: 如果类中没有定义复制构造函数,C++编译器会隐式提供复制构造函数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册