定义:函数对象,顾名思义,行为类似函数的对象叫做函数对象,它定义了 调用操作符的类
优点:
首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性。函数对象也具备有存储先前调用结果的数据成员。在使用普通函数时需要将先前调用的结果存储在全程或者本地静态变量中,但是全程或者本地静态变量有某些我们不愿意看到的缺陷。
其次,在函数对象中编译器能实现内联调用,从而更进一步增...
分类:
其他好文 时间:
2014-09-13 17:22:25
阅读次数:
251
重载操作符与转换--调用操作符和函数对象引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符!struct absInt{ int operator() (int val) { return val > 0 ? val : -val; }}...
分类:
编程语言 时间:
2014-09-07 15:59:35
阅读次数:
274
函数的重载操作符中也有不少细节
1 重载操作符特点
重载操作符本质上就是重载函数,它的特点:
除了函数调用操作符‘()’外,所有的重载操作符的形参数目必须与操作符的操作数目相等。
重载操作符的操作数必须至少有一个类类型,否则就不是重载而是原型了。
优先级和结合性不会发生改变,例如对于算数操作符的重载,*的优先级肯定还是大于+
不具有短路求值特性(就是根据已有的值就可以判断出最终...
分类:
编程语言 时间:
2014-07-21 11:17:04
阅读次数:
190
??
许多STL算法都需要用户指定某个条件或某个策略,而条件或策略的背后由一整组操作构成,便需要某种特殊的东西来代表这“一整组操作”。
代表“一整组操作”的,当然是函数。过去C语言时代,欲将函数当做参数传递,唯有通过函数指针才能达成。但是函数指针有缺点,最重要的是它无法持有自己的状态(所谓局部状态),也无法达到组件技术中的可适配性(adaptablity)-----也就是无法再将某些修...
分类:
其他好文 时间:
2014-06-22 16:22:21
阅读次数:
349
重载操作符与转换--调用操作符和函数对象引言: 可以为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符!struct absInt
{
int operator() (int val)
{
return val > 0 ? val : -val;
}
};
通过为类类型的对象提供一个实参表而使用调用操作符,所用的方式看起来系那个一个函数...
分类:
编程语言 时间:
2014-05-08 08:18:17
阅读次数:
503
重载操作符与转换--自增/自减操作符引言: 自增,自减操作符经常由诸如迭代器这样的类实现,这样的类提供类似于指针的行为来访问序列中的元素。例如,可以定义一个类,该类指向一个数组并为该数组中的元素提供访问检查:class CheckedPtr
{
public:
//这个类没有默认构造函数,必须提供指向数组的指针。
/**构造函数的参数是两个指针:一个指向数组的开始,另一个指向...
分类:
编程语言 时间:
2014-05-08 08:09:00
阅读次数:
493
重载操作符与转换--重载操作符的定义引言: 明智地使用操作符重载可以使类类型的使用像内置类型一样直观!重载操作符的定义 重载操作符是具有特殊名称的函数:保留字operator后接定义的操作符符号。如:Sales_item operator+(const Sales_item &,const Sales_item &);
除了函数调用操作符之外,重载操作符的形参数目(包括成员函数的隐式...
分类:
编程语言 时间:
2014-05-07 07:03:53
阅读次数:
529