复制构造与赋值运算符函数
什么是复制构造
在谈复制构造之前,我们不妨先看看构造函数
在C语言中
struct Point {
int x;
int y;
};
void Init(struct Point* p, int x, int y)
{
p->x = x;
p->y = y;
}
struct Point pt;
Init(&pt,0,0);
上面的方式,需要先构造一个对象,然而这个对象并没有进行相应的初始化,所以要显示调用Init。
这样做有两个不好的地方
1.Init 并没有与 pt进行关联
2.我们有可能会忘掉对pt 先初始化,然后再使用,带来不必要的麻烦。
在C++中,对此进行了改进
class CPoint {
public:
init (int _x, int _y):x(_x),y(_x) {
}
private:
int x;
int y;
};
CPoint pt;
pt.Init(0,0);
这个改进解决了,问题1,2并没有很好的解决下面来一个更彻底的改进
class CPoint {
public:
CPoint (int _x, int _y):x(_x),y(_x) {
}
private:
int x;
int y;
};
CPoint pt(0,0);
构造函数传参数(0,0)来创建pt对象。