新的概念:拷贝构造函数
导引:含有 “构造函数”,因而就具备了“构造函数”的所有特征。此外,还新增加了新的特征。(当然,不变的是其作用依然是 “初始化”。)
作用:用一个已经存在的对象初始化一个正在创建的新对象。
特征:
- 拷贝构造函数名与类名相同,形参只有一个——对象的引用
- 没有任何函数返回类型
- 因为只有一个形参且无返回类型,因而不能重载拷贝构造函数
- 形式:<类名>(<类名> &对象名)
- 没用明显定义时,系统自动给出默认拷贝构造函数——“浅拷贝”
- 某些情况下,用户必须明确定义拷贝构造函数——“深拷贝”
何时需要调用拷贝构造函数:
- 用一个已存在的对象初始化一个新对象时
形式:<类名><新对象名>(<已存在对象名>)
<类名><新对象名>=<已存在对象名> - 对象作为实参,当函数调用开始进行实参和形参结合时
- 当函数的返回值是类的对象,函数调用完成返回时
注意:调用了“拷贝构造函数”,就不会再去执行其他构造函数
(拷贝构造函数就是一种特殊的构造函数)
示例要求:
- 用一个已知的 IntArray 类对象初始化一个新的 IntArray 类对象
- 直接用系统提过的默认拷贝构造函数
#include <iostream>
using namespace std;
class IntArray
{
public:
IntArray(