设为首页 加入收藏

TOP

重载操作符和函数对象
2014-10-28 11:30:07 来源: 作者: 【 】 浏览:50
Tags:重载 操作 符和 函数 对象

  1.重载操作符跟重载函数一样的,只不过要区分成员的和非成员的


  成员的重载操作符,第一个参数默认了是this 指针形参,所以重载操作符作为成员函数,都应该是右操作符


  比如:


  ostream& operator<<(ostream &out) //右操作运算符 调用方式:Screen s;s<


  {


  out<<'('<


  return out;


  }


  friend ostream& operator<<(ostream& out,Screen& s) //友原函数的重载操作符


  {


  out<<'('<


  return out;


  }


  上述一个成员,一个非成员重载方式,调用相应如下:


  s1<


  std::cout<


  2.至于返回值,值得注意的地方是:


  何时返回类型的引用值何时返回类类型,应该跟内置的操作符一致;


  比如+=返回引用,+则应该返回类类型本身。


  如下:


  Screen& operator+=(Screen& rhs) //复合赋值操作符


  {


  height += rhs.height;


  width += rhs.width;


  *pContents += *(rhs.pContents);


  return *this;


  }


  friend Screen operator+(Screen& s1,Screen& s2 )


  {


  Screen s;


  s.width = s1.width+s2.width;


  s.height = s1.height+s2.height;


  *(s.pContents) = *(s1.pContents)+*(s2.pContents);


  return s;


  }


  //可以两种方式调用:


  Screen s0,s1,s2;


  s0=s1+s2; //隐式调用


  //或者


  s0=operator+(s1,s2);//我理解为显式调用


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++调用Fortran生成的DLL实例 下一篇C++的中的结构体和枚举

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: