Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

C++中的复制构造函数

$
0
0

#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;
}

执行的结果如下:


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





作者:Baniel01 发表于2013-8-29 18:50:10 原文链接
阅读:57 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>