c++之拷贝构造和赋值

如果一个构造函数中的第一个参数是类本身的引用,或者是其他的参数都有默认值,则该构造函数为拷贝构造函数。

那么什么是拷贝构造呢?利用同类对象构造一个新对象。

1,函数名和类必须同名。

2,没有返回值。

3,第一个参数必须类本身的对象的const引用,可以有其他的参数,但是必须有默认值。

4,不能重载。

class A{
    public:
        A();
        A(const A &t);//拷贝函数
    private:
        
};

拷贝函数中,形参几乎都为const,并且必须是引用。其作用就是,使用一个已经创造出来的对象来初始化另一个新对象,当然我们如果不写这个函数,系统也会自动生成一个为什么也不干的拷贝构造函数,并依次把非static的成员一一拷贝到正在创建的对象当中去。

前面说过,必须用引用。因为:为了调用拷贝构造函数,我们必须复制他的实参,而复制实参我们又必须去调用拷贝构造函数,从而陷入了一个死循环。

拷贝构造函数的特征:

1,拷贝构造函数的名字与类名相同

2,它只能有一个参数,如果有其他的,那么必须有默认值。

3,每一个类都有一个拷贝构造函数,如果你没有定义,系统会自动生成一个拷贝构造函数。

以下,写一个拷贝构造函数的例子:

主函数如下

而赋值就是,先初始化,然后被给予值。使用=即可实现。

class A{......};

A a,b;

......(省略中间初始化a的过程)

b=a;

如上

最后总结:

如果类中出现指针,拷贝构造函数,析构函数必须自己写,否则会出现严重的错误,比如连续的释放同一处空间,或者是一个指针同时指向了两个地址。这就是所谓的浅拷贝。


每日金句:

        走自己的路,让他人为之侧目

                                                                                                                  ————“轻搂爱莉热吻”

                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值