[c++] 拷贝构造函数

拷贝构造函数就是进行对象拷贝复制的函数。

拷贝构造函数也是一种构造函数。它用同类型的对象来初始化新创建的对象。其唯一的形参是const类型&,此函数也由系统自动调用。

拷贝构造函数也可以理解为构造函数的一种重载。

拷贝构造函数的定义方式一:

class 类名 {
public:
    // 类的内部实现拷贝构造函数,内联函数
    类名(const 类名 &参数) {
        // 初始化代码
    }
}

拷贝构造函数的定义方式二:

class 类名 {
public:
    // 类的内部声明
    类名(const 类名 &参数);
}

// 类的外部实现函数
类名::类名(const 类名 &参数) {
        // 初始化代码
}

拷贝构造函数的特点:

1、拷贝构造函数名与类名相同,无返回值。

2、它是类的成员函数,可以直接访问类的所有数据成员。

3、在列的内部定义是内联函数。

4、类如果没有定义类的来拷贝构造函数,编译系统就会自动生成一个默认的拷贝构造函数(简单的值拷贝),一旦开发者编写了拷贝构造函数,编译系统将不再提供。

三种情况需要调用拷贝构造函数

1、定义一个对象时,用另外一个对象进行初始化(常称为赋值初始化)

2、一个对象作为函数参数,以值传递的方式传入函数体

3、一个对象作为函数返回值,以值传递的方式从函数返回

#include <iostream>

using namespace std;

class A {
public:
    A(int a1) {
        this->a = a1;
        cout << "调用构造函数" << endl;
    }

    A(const A &a1) {
        this->a = a1.a;
        cout << "调用拷贝构造函数" << endl;
    }

private:
    int a;
};

int main(void) {
    // 调用构造函数据
    A a(123);
    // 调用拷贝构造函数
    A b(a);
    // 调用拷贝构造函数
    A c = b;
}
原文地址:https://www.cnblogs.com/lialong1st/p/12078500.html