设为首页 加入收藏

TOP

4.8.1 基本运算概念
2013-10-07 15:01:26 来源: 作者: 【 】 浏览:74
Tags:4.8.1 基本 运算 概念

4.8.1  基本运算概念

由于C++(www.cppentry.com)可重载的操作符很多,因此operators库是由多个类组成的,分别用来实现不同的运算概念,比如less_than_comparable定义了<系列操作符,left_shiftable定义了<<系列操作符。operators中的概念非常多,囊括了C++(www.cppentry.com)中的大部分操作符重载,在这里我们先介绍一些最常用的算术操作符:

equality_comparable:要求提供==,可自动实现!=,相等语义;

less_than_comparable:要求提供<,可自动实现>、<=、>=;

addable:要求提供+=,可自动实现+;

subtractable:要求提供-=,可自动实现-;

incrementable:要求提供前置++,可自动实现后置++;

decrementable:要求提供前置--,可自动实现后置--。

equivalent:要求提供<,可自动实现==,等价语义,它与equality_comparable的区别请参见4.8.5节。

这些概念在库中以同名类的形式提供,用户需要以继承的方式来使用它们。继承的修饰符并不重要(private、public都可以),因为operators库里的类都是空类,没有成员变量和成员函数,仅定义了数个友元操作符函数。

例如,less_than_comparable的形式是:

  1. template <class T> 
  2. struct less_than_comparable {  
  3.      friend bool operator>(const T& x, const T& y);  
  4.      friend bool operator<=(const T& x, const T& y);  
  5.      friend bool operator>=(const T& x, const T& y);  
  6. };  

如果要同时实现多个运算概念则可以使用多重继承技术,把自定义类作为多个概念的子类,但多重继承在使用时存在很多问题,稍后将看到operators库使用了特别的技巧来解决这个问题。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.8.4 复合运算概念 下一篇4.8.3 基类链

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: