调用操作符和函数对象的疑惑
2015-06-20 12:57
309 查看
/* 调用运算符和函数对象 部分内容摘自:C++ Primer 起初觉得这种写法很怪异,用结构体+重载“调用运算发”(就是圆括号),来实现函数的功能 */ #include<iostream> using namespace std; /*封装了将int值转换为绝对值的操作*/ struct absInt { int operator()(int val) { return val<0 ? -val:val; } }; /*取绝对值函数*/ int AbsInt(int val) { return val<0 ? -val:val; } int main() { int i = -42; int func_result = 0; absInt absObj; unsigned int ui = absObj(i); func_result = AbsInt(i); cout<<ui<<endl;; cout<<func_result<<endl; getchar(); return 0; } /* 从上面的例子来说,我不觉得,这种重载函数调用操作符的操作会比直接使用函数好。 也许这种方法适合于某些特定场景,可是是什么场景呢? */
http://zhidao.baidu.com/link?url=qSDqZlnk9YVhLHHG8MhWhYbLArWca4o8wS8pCRdgUbsDkC_UHP4Zm7KtaA7WHnXwInLsbSQco9IufACViyENgYaLONPcPS1V0GTXUpg1-ci
从上面的文章中得知,在向集合中添加数据时,运用它可以实现集合容器增加和查找内部数据的比较排序。另外,在Cpp Primer中,还介绍了另一种方法,使用比较函数。
我们可以知道,构造一个容器的比较器,通常有两种方法,一种是使用函数对象,另一种就是普通函数。
相关文章推荐
- EasyUI之tab标签显示页面内容
- 1. Java基础
- kettle学习笔记(一)
- python pip通过本地目录安装相关程序包
- 顺序表的实现
- 组态ORACLE 11G ADG
- springMVC拦截器
- python的pip和virtualenv使用心得
- 非功能测试测试框架_Phoenix-晶
- 链表的基本操作应用-reverse
- testng 教程之使用参数的一些tricks配合使用reportng
- 【设计模式】单例模式详解
- js对象
- C#如何生成随机不重复的数字
- 3.MyBatis 入门程序
- vim的学习小小笔记
- Python----matplotlib详细介绍
- 运行及总结
- Windows 2008 + SQLServer 2008 双机群集
- SGU 246. Black & White(数论)