关闭

何时调用构造函数

标签: C++
324人阅读 评论(0) 收藏 举报
分类:
在使用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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1113次
    • 积分:93
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:2篇
    • 评论:0条
    文章分类
    文章存档