以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  二元操作符重载  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=88046)


--  作者:葛靖青001
--  发布时间:11/30/2010 8:54:00 AM

--  二元操作符重载
【转自互联网】

二元操作符@(+, -,*, /等)

  一般而言,对于某个二元操作符@,应定义其赋值形式,使a@=b和a=a@b具有相同的含义。一般第一种形式更加高效,因为仅计算一次a。具体实现的标准方法如下:

  T& T::operator@=( const T& ) {

  // …implementation …

  return *this;

  }

  T operator@( const T& lhs, const T&rhs ) {

  T temp( lhs )

  return temp @= rhs;

  }

  注意这里operator@是非成员函数,因此该函数能够接受左参数和右参数的隐式转换。

  从上述的具体实现中,可以知道operator@直接改变a的值,并返回a的引用。故可以有如下的使用方法:

  (a@=b).function() 即,因返回对象a,故可进一步操作对象。T operator@返回临时对象,故对该对象进行操作是没有意义的,应该先用具名变量获取该对象值,再操作具名变量。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,414.063ms