小括号重载
来源:互联网 发布:qq飞车s车麦凯伦数据 编辑:程序博客网 时间:2024/05/17 07:05
#include <iostream>using namespace std;class Time{public: int h; int m; int s; Time( int h = 0, int m = 0, int s = 0 ) { operator()(h,m,s); } //小括号重载 版本0 注意和下面用户自定义转换的区别 int operator()() { return h*3600 + m*60 + s; } //用户自定义转换 operator int() { return h*3600 + m*60 + s; } //小括号重载 版本1 void operator()(int h) { operator()(h,0,0); } //小括号重载 版本2 void operator()(int h, int m) { operator()(h,m,0); } //小括号重载 版本3 void operator()(int h, int m, int s) { this->h = h; this->m = m; this->s = s; } friend ostream & operator << ( ostream & os, const Time & t ) { os << t.h << "::"; if ( t.m < 10 ) { os << '0'; } os << t.m << "::"; if ( t.s < 10 ) { os << '0'; } os << t.s; return os; }};int main(){ /* ** 注意:t(1),t(1,1),t(1,1,1)的用法 ** 像不像“函数调用” ** 这样的用法称之为仿函数 ** 仿函数在STL里用得特别多 */ Time t; cout << t << endl; t(1); //小括号重载 版本1 cout << t << endl; t(1,1); //小括号重载 版本2 cout << t << endl; t(1,1,1); //小括号重载 版本3 cout << t << endl; cout << t() << endl; //小括号重载 版本0 cout << int(t) << endl; //用户自定义转换 return 0;}
1.小括号重载用得最多的地方,自然还是“仿函数”,这个有空可以专门写一章
2.在使用用户自定义转换,可以想一下:将double型转换为int型的过程。
参考资料:
1.http://blog.sina.com.cn/s/blog_5d2a81780100r9q0.html
- 小括号重载
- 小括号重载
- 小括号'()'运算符重载、逻辑与'&&'、逻辑或'||'运算符重载说明(需要了解)
- C++ 重载中括号
- 括号运算符重载
- C++:特殊运算符的重载star、小括号、TYPE自定义类型、new和delete
- 小括号与花括号小括号与花括号
- shell 小括号中括号大括号
- [shell] 小括号、中括号、大括号
- C++重载括号和重载类型探索
- bash 括号(小括号,双小括号,中括号,双中括号,大括号)
- bash 括号(小括号,双小括号,中括号,双中括号,大括号)
- bash 括号(小括号,双小括号,中括号,双中括号,大括号)
- 重载 方括号 中括号 [][] [C++]
- 括号运算符的重载
- 括号操作符重载案例
- shell中的括号(小括号,大括号/花括号)
- shell中的括号(小括号,大括号/花括号)
- HTML <label> 标签
- insertion sort
- input file 没有name属性,后台不能取得Files
- oracle创建表空间和用户脚本
- 关于 addSubView 的小提示
- 小括号重载
- asp.net中导出到Excel的方法汇总及导出Excel/Csv格式数据最优方案
- Socket模型详解
- ORACLE客户端远程连接数据库
- 模板的特化与偏特化
- Android 平时易忘的错误记录
- Linux du 命令用法
- 时间戳和普通日期的相互转换
- Android应用程序开发以及背后的设计思想深度剖析