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()函数时会调用拷贝构造函数;即实参向形参传递数据时 进行了实参向形参的数据的拷贝 调用了自己写的赋值构造函数
}
posted @ 2018-04-13 11:21  DuanRui  阅读(226)  评论(0编辑  收藏  举报