zoukankan      html  css  js  c++  java
  • C++拷贝构造函数

    拷贝构造函数

    1. 什么是拷贝构造函数?

        拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。

    2.拷贝构造函数的用途

    • 通过同一类型的对象来初始化新的对象
    • 复制对象,并从函数返回这个对象
    • 复制对象把他作为参数传给函数

      *当重写拷贝构造函数时需要同时写出普通构造函数!

    3.拷贝构造函数实例

    1.通过同一类型的对象来初始化新的对象

    #include<bits/stdc++.h>
    
    using namespace std;
    
    class A
    {
    public:
        int a;
    public:
        A(int temp)
        {cout << "调用构造函数初始化!!" << endl;
        a = temp;
        };
        A(const A &temp)   //拷贝构造函数参数应该使用 const 和 & 修饰
        {
            cout << "调用拷贝构造初始化!!" << endl;
            a = temp.a;
        }
    
    };
    
    int main()
    {
        A a(111);  //使用普通构造函数初始化
        A test2 = a;//调用拷贝构造初始化
    
    }
    

    2.复制对象,并从函数返回这个对象

    #include<bits/stdc++.h>
    
    using namespace std;
    
    class A
    {
    public:
        int a;
    public:
        A(int temp)
        {cout << "调用构造函数初始化!!" << endl;
        a = temp;
        };
        A(const A &temp)   //拷贝构造函数参数应该使用 const 和 & 修饰
        {
            cout << "调用拷贝构造初始化!!" << endl;
            a = temp.a;
        }
    
    };
    
    A test()
    {
        A temp(10);
        return temp;
    
    }
    
    int main()
    {
     test();//当对象最为函数返回值时调用拷贝构造
    
    }
    

    3.复制对象把他作为参数传给函数

    #include<bits/stdc++.h>
    
    using namespace std;
    
    class A
    {
    public:
        int a;
    public:
        A(int temp)
        {cout << "调用构造函数初始化!!" << endl;
        a = temp;
        };
        A(const A &temp)   //拷贝构造函数参数应该使用 const 和 & 修饰
        {
            cout << "调用拷贝构造初始化!!" << endl;
            a = temp.a;
        }
    
    };
    void test (A temp)
    {
    
    };
    int main()
    {
        A a(111);  //使用普通构造函数初始化
        test(a);   //当a传入test()函数时会调用拷贝构造函数;即实参向形参传递数据时 进行了实参向形参的数据的拷贝 调用了自己写的赋值构造函数
    }
    
  • 相关阅读:
    如何用kaldi做孤立词识别三
    如何用kaldi做孤立词识别二
    脚本注释3
    [转] kaldi中FST的可视化-以yesno为例
    如何用kaldi做孤立词识别-初版
    [转]语言模型训练工具SRILM
    [转]kaldi 神经网络
    [转]kaldi ASR: DNN训练
    [转]Kaldi命令词识别
    [转] 如何用kaldi训练好的模型做特定任务的在线识别
  • 原文地址:https://www.cnblogs.com/D-Rui/p/9769171.html
Copyright © 2011-2022 走看看