C++技巧之operator操作符
来源:互联网 发布:php 推荐系统算法 编辑:程序博客网 时间:2024/05/05 21:48
这篇博文是以前很久写的,贴在我的早期一个blog中,今天google一下,发现还真有不少人转载,可惜并不注明出处。那时觉得operator比较好玩。C++有时它的确是个耐玩的东东。operator它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。
1.operator overloading
C++可以通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示
- template<typename T> class A
- {
- public:
- const T operator + (const T& rhs)
- {
- return this->m_ + rhs;
- }
- private:
- T m_;
- };
又比如STL中的函数对象,重载(),这是C++中较推荐的写法,功能与函数指针类似,如下所示
- template<typename T> struct A
- {
- T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
- };
2 operator casting
C++可以通过operator 重载隐式转换,格式如下: operator 类型T (),如下所示
- class A
- {
- public:
- operator B* () { return this->b_;}
- operator const B* () const {return this->b_;}
- operator B& () { return *this->b_;}
- operator const B& () const {return *this->b_;}
- private:
- B* b_;
- };
- C++技巧之operator操作符
- C++技巧之operator操作符
- C++技巧之operator操作符
- C++技巧之operator操作符
- C++技巧之operator操作符
- 重载->和*操作符之operator->()与operator*()
- C++,重载输出操作符<<, cout.operator()
- 【C++】operator关键字(重载操作符)
- 【C++】预处理定义操作符Stringizing Operator (#) ,Charizing Operator (#@), Token-Pasting Operator (##)
- c++ primer 之-------操作符operator()
- c++重载操作符研究之 operator ->()
- [C/C++]_[操作符重载operator type()和operator()的区别]
- operator操作符
- operator 操作符重载
- 操作符(operator)
- VEX Operator(操作符)
- 重载operator操作符
- j2ee Operator 操作符
- FZU 2070 - Beautiful number 数位DP..
- Uva 11181 - Probability|Given
- [2014美团网笔试]给定一个单链表和一个整数k,要求每隔k个元素翻转链表
- delphi版大话设计模式
- hdu 3864 D_num Pollard_rho算法和Miller_Rabin算法
- C++技巧之operator操作符
- 20 你应该知道的PHP库
- Win8.1慎用优化,可能导致安装驱动出现数据无效的问题。附解决方法
- 字符编码笔记:ASCII,Unicode和UTF-8
- BAE 开发经验 百度云平台 例子
- 在Windows Server 2008 R2上安装Exchange 2013过程中遇到的一些问题
- 2013.9.29 数据库SQL:mysql 时间函数在项目中的使用
- 百度2014校园招聘长沙站笔试题
- oracle创建表空间用户