20130712_C++ 中的复制构造与赋值运算符函数(1)

复制构造与赋值运算符函数

什么是复制构造

在谈复制构造之前,我们不妨先看看构造函数

在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对象。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值