C++之双目/单目等运算符的重载

发表于:2014-5-21 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Luck-Angel    来源:51Testing软件测试网采编

  1. 双目运算符重载
  1.1格式:
L/*左操作数*/ # /*操作符*/ R/*右操作数*/
L#R
=> L.operator#(R) 成员形式,写在类中,成员函数形式
=> operator#(L,R) 非成员形式 //需要定义为类的友元函数
如:
cout << c1;
=> cout.operator<<(c1)
=> operator<<(cout,c1)
1.2实际操作形式:
类名 operator+(const 类名& 对象名)
{ return 类名(...,....);//构建的一个匿名对象}
类名 operator-(const 类名& 对象名)
{ return 类名(...,....);//构建的一个匿名对象}
类名& operator+=(const 类名& 对象名)
{ return *this = *this + 对象名;}
类名& operator-=(const 类名& 对象名)
{ return *this -= *this - 对象名;}
  2. 单目运算符的重载
  2.1格式:
#/*操作符*/O/*操作数*/
=>O.operator#();//成员形式
=>operator#(O); //非成员形式
如:
cout << -c1 << endl;
c1.operator-();//成员函数形式
operator-(c1);//非成员函数形式
  2.2实际操作形式:
  类名 operator-(void)
  { return 类名(-...,-...);}
  注意:
  对于运算符重载的两种形式中,优先调用成员函数形式
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号