C++中的复制构造函数

来源:互联网 发布:linux 设置ntp时间同步 编辑:程序博客网 时间:2024/05/05 05:04

#include <iostream>/*    复制构造函数是C++中的一种特殊的函数,同构造函数一样对对象进行处理。    在数值的传递中时,他对对象进行复制操作,将原来对象中的数值进行拷贝    它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。    其唯一的参数(对象的引用)是不可变的(const类型)。    此函数经常用在函数调用时用户定义类型的值传递及返回。    拷贝构造函数要调用基类的拷贝构造函数和成员函数。    如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。*/using namespace std;class A{public:    A(int i,int j)    {        cout << "执行构造函数!" <<endl;        m = i;        n = j;    }    A(A&one)        //此处的复制构造函数就是系统默认的复制构造函数实现的机理,()中的A&表示这是一个引用,通过引用可以找到待拷贝的对象的数据    {        cout << "执行复制构造函数!" <<endl;        n = one.n;        m = one.m;    }    ~A()    {        cout << "执行析构函数!" <<endl;    }    void print()    {        cout << m << " " << n;    }private:    int m;    int n;};int main (void){    A a(2,4);    a.print();    cout << endl;    A b(a);     //需要使用复制构造函数进行a对象的拷贝,复制构造函数也有构造函数的功能    b.print();    return 0;}

执行的结果如下:


可以发现,在执行完复制构造函数之后没有执行构造函数,这说明复制构造函数也有构造函数的功能,这也就是他为什么叫复制构造函数!