C++ 拷贝构造函数

来源:互联网 发布:个人淘宝网店怎么申请 编辑:程序博客网 时间:2024/06/13 23:57

1. 定义

    <类名> (const <类名>&);

    

class A{    int x,y;  public:    A();    A(const A& a)    {        x = a.x+1;        y = a.y+1;    }}

    其中,const是为了防止在函数中修改实参对象,可以省略。

    拷贝构造函数也可以带有其他参数,但这些参数必须要有默认值。

2. 调用

    下面三种情况将会调用拷贝构造函数:

    1)定义对象

    2)把对象作为值参数传递给函数

    3)把对象作为返回值

    如果在类定义中没有给出拷贝构造函数,则编译程序将会为其提供一个隐式的拷贝构造函数,此时的拷贝构造函数跟Java中的克隆函数有点像。

    当类定义中包含成员对象,成员对象的拷贝初始化可由成员对象类的拷贝构造函数来实现。

    系统提供的隐式拷贝构造函数会去调用成员对象的拷贝构造函数,而自定义的拷贝构造函数则不会自动去调用成员的拷贝构造函数,这时,必须要在拷贝构造函数的成员初始化表中显式指出。

    

class A{}class B{    int z;    A a;  public:    B();    B(const B& b): a(b.a)    {        z = b.z;    }}

0 0
原创粉丝点击