复制构造函数 赋值操作符

静态数据成员在类声明中声明,在包含类方法的文件中初始化。这是因为声明描述了如何分配内存,并不分配内存。
初始化时使用作用域解析符来指出静态成员所属的类,但如果静态成员是整型或枚举型const,则可以在类声明中初始化。

如果没有定义,C++自动提供了下面这些成员函数:
默认构造函数;
复制构造函数;
赋值操作符;
默认析构函数;
地址操作符;

复制构造函数用于将一个对象复制到新创建的对象中,也就是说,它应用于初始化过程中,而不是常规的复制过程中。
类的复制构造函数原型:Class_name (const Class_name &);
何时调用复制构造函数:新建一个对象,并将其初始化为同类现有对象时;每当程序生成了对象副本时,编译器都将使用复制构造函数。具体地说:当函数按值传递对象或函数返回对象时,都将使用复制构造函数,编译器生成临时对象时,也将调用复制构造函数。
功能:默认的复制构造函数逐个复制非静态成员(成员复制也称浅复制),复制的是成员的值。
如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据,而不是指针,这是深度复制。

何时使用赋值操作符:将已有的对象赋给另一个对象时,将使用重载的赋值操作符。
解决赋值操作符的问题:
1.由于目标函数可能引用了以前分配的数据,所以函数应使用delete[]来释放这些数据;
2.函数应当避免将对象赋给自身,否则,给对象重新赋值之前,释放内存可能删除对象的内容;
3.函数返回一个指向调用对象的引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值