拷贝构造函数(整理)

拷贝构造函数用于初始化新对象,它与类名相同,接收一个对象引用作为参数。系统默认提供浅拷贝,可能导致内存释放问题。当类包含指针成员时,需要自定义深拷贝构造函数以避免错误。
摘要由CSDN通过智能技术生成

新的概念:拷贝构造函数

导引:含有 “构造函数”,因而就具备了“构造函数”的所有特征。此外,还新增加了新的特征。(当然,不变的是其作用依然是 “初始化”。)

作用:用一个已经存在的对象初始化一个正在创建的新对象。

特征:

  1. 拷贝构造函数名与类名相同,形参只有一个——对象的引用
  2. 没有任何函数返回类型
  3. 因为只有一个形参且无返回类型,因而不能重载拷贝构造函数
  4. 形式:<类名>(<类名> &对象名)
  5. 没用明显定义时,系统自动给出默认拷贝构造函数——“浅拷贝”
  6. 某些情况下,用户必须明确定义拷贝构造函数——“深拷贝”

何时需要调用拷贝构造函数:

  1. 用一个已存在的对象初始化一个新对象时
    形式:<类名><新对象名>(<已存在对象名>)
    <类名><新对象名>=<已存在对象名>
  2. 对象作为实参,当函数调用开始进行实参和形参结合时
  3. 当函数的返回值是类的对象,函数调用完成返回时

注意:调用了“拷贝构造函数”,就不会再去执行其他构造函数
(拷贝构造函数就是一种特殊的构造函数)

示例要求:

  1. 用一个已知的 IntArray 类对象初始化一个新的 IntArray 类对象
  2. 直接用系统提过的默认拷贝构造函数
#include <iostream>
using namespace std;
class IntArray
{
   
   public:
   IntArray(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值