boost学习之-Operators

用法:

1 c++一个重要的功能是复用,避免写重复代码,而boost为自定义类的operator的实现代码提供了复用实现

2 operator重载中,有这样一个事实:多数运算符重载实现中可以通过调用少数的运算符重载函数来实现

   如 下:下面的实现,都是通过<和>两个运算符

   friend bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
     friend bool operator>=(const T& x, const U& y) { return !static_cast<bool>(x < y); }
     friend bool operator>(const U& x, const T& y)  { return y < x; }
     friend bool operator<(const U& x, const T& y)  { return y > x; }
     friend bool operator<=(const U& x, const T& y) { return !static_cast<bool>(y < x); }
     friend bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }

3 boost中通过把2中的大多数运算符封装到基类中,在你定义的类只要从boost库提供的基类中继承,并实现类似上面<和>这样的重载操作符,么在派生类中

就自动有了基类提供的操作符重载实现;

例如:从boost::less_than_comparable<T>继承,
less_than_comparable 要求类型T具有以下语义,就是定义下面的操作符重载函数
bool operator<(const T&,const T&);

bool operator>(const T&,const T&);

bool operator<=(const T&,const T&);

bool operator>=(const T&,const T&);
要派生自 boost::less_than_comparable, 派生类(T)必须提供:

bool operator<(const T&, const T&);

 总之,如果要实现一些操作符重载,可以从boost提供的模板类中继承,减少工作量; 

  

  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值