C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。

1、操作符重载
C++可以通过operator实现重载操作符,格式如下:类型T operator 操作符 (),比如重载+,比如下面这个例子
template<typename T> class A
{
public:
     const T operator+(const T& rhs)
     {
         return this->m_ + rhs;
     }
private:
     T m_;
};

又比如STL中的函数对象,重载(),比如下面这个例子
template<typename T> struct A
{
   T operator()(const T& lhs, const T& rhs){ return lhs-rhs; }
};

2、 操作隐式转换
C++可以通过operator实现重载隐式转换,格式如下: operator T (),其中T是一个类型,比如下面这个例子
class A
{
public:
   operator   B*() { return this->b_; } 
   operator const   B*() { return this->b_; }
   operator   B&() { return *this->b_; }
private:
   B* b_;
};

A a;
if(a),编译时,它转换成if(a.operator B*()),其实也就是相当于 if(a.b_)

最新文章

  1. MongoDB学习笔记系列
  2. [AIR] 打开我的电脑
  3. T-SQL 查询、修改数据表
  4. rar 命令
  5. O(N)时间的排序
  6. Eclipse支持Jquery代码提示(JqeuryWTP)
  7. 科普:WiFi是谁申请的专利?高通吗?错!
  8. sharepoint站点锁定后解锁
  9. semaphore实现浏览器的读写原理
  10. 获取一个gridcontrol的数据行数
  11. 关于 API
  12. exec与match方法的区别
  13. href=#与href=javascript:void(0)的区别
  14. 消息中间件——RabbitMQ
  15. opencv学习之路(5)、鼠标和滑动条操作
  16. axios的学习与使用
  17. Python 获取秒级时间戳与毫秒级时间戳
  18. 【spring cloud】【IDEA】【Maven】spring cloud多模块打包,打包的jar包只有几k,jar包无法运行,运行报错:no main manifest attribute, in /ms-eureka.jar
  19. MariaDB快速选择最适合您的需要的存储引擎
  20. spring3: 对JDBC的支持 之 关系数据库操作对象化

热门文章

  1. Xcode5 取消ARC
  2. WCF服务开发与调用的完整示例
  3. quartz.net 使用(一)-执行定时计划任务
  4. 对编写html代码的几点儿小建议
  5. 1、datatable与datagrid之间的绑定
  6. C#中using关键字的作用及用法
  7. IOS7 ~ Xcode5 制作 framework
  8. Python::OS 模块 -- 文件和目录操作
  9. HC系列蓝牙模块连接单片机与电脑,传输数据(蓝牙心电测试)
  10. H5版定点投篮游戏(1)--物理模型抽象