c++复制构造函数
目录
c++复制构造函数
1 作用:
2 一般形式:
3 什么情况下使用
4 总结
1 作用:
用已经生成的对象来初始化另一个同类的对象。
2 一般形式:
类名(const 类名& obj)//为什么用const:因为复制构造函数只是复制对象,没必要改变传递过来的对象的值
{
函数体
}
eg:
class One { //One类
public:
One() : x(0), y(0) {}//默认构造函数
One(int a,int b) : x(a), y(b) {} //带参数的构造函数
One(const One& two) : x(two.x), y(two.y) {}//复制构造函数
private:
int x,y;
};
3 什么情况下使用
(1) 用一个对象初始化另一个对象。
tips:c++有两种初始化形式,复制初始化和直接初始化
复制初始化
1 使用=
2 总是调用复制构造函数
直接初始化
1 将初始化放在()中
2 调用与实参匹配的构造函数
eg:
One one1(10,100) One one2=one1 //复制初始化 One one3(one1) //直接初始化
(2)函数参数按值传递对象时或者函数返回对象时
当函数形参为对象类型(不是指针和引用)时,编译器调用复制构造函数产生一个实参对象副本传递到函数中。
同理,当以对象类型作为返回值时,编译器调用复制构造函数产生一个return语句中的值的副本返回到调用函数
(3)根据元素初始化式列表初始化数组元素时
若没有为类类型数组提供元素初始化,则用默认构造函数初始化每个元素,但如果使用大括号的数组初值列表形式来初始化数组时,则使用复制初始化来初始化每个元素
4 总结
有了复制构造函数,函数才可以传递对象和返回对象,对象数组(由对象组成的数组)才能用初值列表的形式初始化。
(课堂笔记)



