当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

C++顶用赋值情势op=代替单独情势op[VC/C++编程]

赞助商链接



  本文“C++顶用赋值情势op=代替单独情势op[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

大大都程序员认为假如他们能这样写代码:

x = x + y; x = x - y;

那他们也能这样写:

x += y; x -= y;

假如x和y是用户定义的范例(user-defined type),就不能确保这样.就C++来说,operator+、operator=和operator+=之间没有任何干系,因此假如你想让这三个operator同时存在并具有你所盼望的关系,就必须自己实现它们.同理,operator -, *, /, 等等也一样.

确保operator的赋值情势(assignment version)(比方operator+=)与一个operator的单独情势(stand-alone)(比方 operator+ )之间存在正常的关系,一种好办法是后者(指operator+ 译者注)按照前者(指operator+= 译者注)来实现(拜见条款6).这很简单:

class Rational {
 public:
  ...
  Rational& operator+=(const Rational& rhs);
  Rational& operator-=(const Rational& rhs);
};
// operator+ 按照operator+=实现;
//有关为什么返回值是const的注释,
//拜见Effective C++条款21 和 109页 的有关实现的告诫
const Rational operator+(const Rational& lhs,const Rational& rhs)
{
 return Rational(lhs) += rhs;
}
// operator- 按照 operator -= 来实现
const Rational operator-(const Rational& lhs,const Rational& rhs)
{
 return Rational(lhs) -= rhs;
}

在这个例子里,从零开始实现operator+=和-=,而operator+ 和operator- 则是通过调用前述的函数来供应自己的功效.利用这种计划办法,只用保护operator的赋值情势就行了.并且假如假定operator赋值情势在类的public接口里,这就不用让operator的单独情势成为类的友元(拜见Effective C++ 条款19).


  以上是“C++顶用赋值情势op=代替单独情势op[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .