何时调用构造函数

在使用x、y坐标时,将两个矢童相加将非常简单,只要将两分量相加,得到最终的x分量;将两个y分量相加,得到最终的y分量即可。根据这种描述,可能使用下面的代码:
<span style="font-size:14px;">Vector Vector::operator+(const Vector & b)const
{
     vector sum;
     sum.x=x+b.x;
     sum.y=y+b.y;
     return sum; // incomplete version
}</span>


如果对象只存储x和y分量,则这很好。遗憾的是,上述代码无法设置极坐标值。可以通过添加另外一些代码来解决这种问题:
<span style="font-size:14px;">Vector Vector::operator+ (const Vector & b) const
{
     Vector sum;
     sum.x=x+b.x;
     sum.y=y+b.y;
     sum.set_ang(sum.x, sum.y);
     sum.set_mag(sum.x, sum.y);
     return sum;//  version duplicates needlessly
}</span>


使用构造函数来完成这种工作,将更简单、更可靠:
<span style="font-size:14px;">Vector Vector::operato+ (const Vector & b) const
{
     returnVector(X+b.x,y+b.y);// return the constructed Vector
}</span>

     上述代码将新的x分量和y分量传递给Vector构造函数,而后者将使用这些值来创建无名的新对象,并返回该对象的副本。这确保了新的Vector对象是根据构造函数制定的标准规则创建的。
     提示:如果方法通过计算得到一个新的类对象,则应考虑是否可以使用类构造函數来完成这种工作。这样做不仅可以避免麻烦,而且可以确保新的对象是按照正确的方式创建的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值