• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
p-boost-q
博客园    首页    新随笔    联系   管理    订阅  订阅
运算符重载方法3

上两节可以这样运算:

A a1(1);

A a2(4);

a1 = a2 + 2;

但是这样的话就不行了:

a1 = 2 + a2;

因为A对象调用operator+时必须在运算符+的左边,这是C++语言定义的方式。

我们可以这样子需改:在类内声明:friend A operator +(const A & rhs,const A & lhs);

在类外定义:

A operator +(const A & rhs,const A & lhs)
{
A newA;
newA.setValue(rhs.mValue + lhs.mValue);
return newA;
}

注意这里不应该是:A A::operator +(const A& rha,const A& lhs)

因为这是friend函数,是全局函数;

这样就可以运算a1 = 2 + a2;

 

posted on 2019-01-29 18:42  p-boost-q  阅读(135)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3