C++重载比较运算符例子看到的问题

happyliuliming 2015-09-23 11:27:17
Visual C++ 2010 入门经典第8章看到的例子


//Function for testing if a constant is > a CBox object
bool operator>(const double& value, const CBox& aBox)
{
return value>aBox.Volume();
}

//Function for testing if a constant is < a CBox object
bool operator<(const double& value, const CBox& aBox)
{
return value<aBox.Volume();
}
//根据刚刚定义的两个函数,可以实现参数位置互换的>和<运算符
//Function for testing if CBox object is > a constant
bool operator>(const CBox& aBox, const double& value)
{
return value<aBox;
// 这里为什么不是 return value<aBox.Volume();
}

//Function for testing if CBox object is < a constant
bool operator<(const CBox& aBox, const double& value)
{
return value>aBox;
//为什么不是 return value>aBox.Volume();
}
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyliuliming 2015-09-24
  • 打赏
  • 举报
回复
这里已经可以调用上面的重载函数了,这个<已经不是一般的<了,所以没必要再在这里写一个相同的代码了 理解了,非常感谢。
勤奋的小游侠 2015-09-24
  • 打赏
  • 举报
回复
bool operator>(const CBox& aBox, const double& value) { return value<aBox; // 这里为什么不是 return value<aBox.Volume(); 因为它会调用上面的< 重裁函数,要注意,这里已经可以调用上面的重载函数了,这个<已经不是一般的<了,所以没必要再在这里写一个相同的代码了 } 这是一个编程理念的问题,二个函数,如果它们的逻辑相同的,最好就是在一个函数里面调用另一个,而不是copy两份相同的代码,这样以后维护方便很多,要改逻辑时,只需改一处代码即可。 类拟的,有构造函数,如果一个类有多个构造函数,通常只会在默认构造函数做初始化,其它的带参构造函数调用这个默认的,而不是把初始化代码copy几份到带参构造函数里面。
ztenv 版主 2015-09-24
  • 打赏
  • 举报
回复
因为已经有了doubld<CBOX 的重载了,所以你直接写就行了
happyliuliming 2015-09-23
  • 打赏
  • 举报
回复
.Foo() 又是啥?
dustpg 2015-09-23
  • 打赏
  • 举报
回复
假设判断依据从.Volume() 变成.Foo()了, 这样只需要修改两处代码

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧