C++ 拷贝构造函数

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值