• [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;
    }
  • 相关阅读:
    项目实战
    bootscript/javascript组件
    html5应用程序标签
    bootstrap框架应用
    bootstrap javascript插件部分的笔记整理
    bootstrap页面模板
    redis安装
    nginx + vsftpd 搭建 图片服务器
    centOs7 安装
    单链表的最装逼写法
  • 原文地址:https://www.cnblogs.com/lialong1st/p/12078500.html
Copyright © 2020-2023  润新知