[VC]C++ 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中的函数对象,重载(),如下所示
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* () {return this->b_;}    
   operator   B& () {return *this->b_;} 
private:    
  B* b_; 
};
A a; 
当if(a),编译时,其中它转换成if(a.operator B*()),其实也就是判断 if(a.b_)
[VC]C++ operator 两种用法的更多相关文章
- c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast
		
C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...
 - operator 的两种用法
		
C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).1.操作符 ...
 - Service的两种用法及其生命周期
		
先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...
 - JSP中的include的两种用法
		
1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法区别 (1)执行时间上区别 < ...
 - 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。
		
子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...
 - Comparable和Comparator的区别&Collections.sort的两种用法
		
在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...
 - in有两种用法:
		
# in有两种用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中. #len() 为内置函数,输出为1,2,3,4....., 长度 ...
 - jsp中include的两种用法
		
JSP中的include的两种用法 1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用 ...
 - Sql server 事务的两种用法
		
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便 ...
 
随机推荐
- 原来C#可以直接写二进制数的
			
二进制数在C#中的写法: byte b=0b01111110 二进制字符串的解释: string bstr="0111110"; byte b=Convert.ToByte(bst ...
 - 批处理打开和关闭oracle11g 服务
			
也许我们经常会有这样一些困惑,如果让oracle随开机启动,我们得电脑内存会被占用殆尽,运行速度会变的异常慢,但是,手动一个一个去启动和关闭,又会非常麻烦.为了解决这个问题,我们有一个办法,那就是写两 ...
 - 018 4Sum 四个数的和
			
给定一个含有 n 个整数的数组 S,数列 S 中是否存在元素 a,b,c 和 d 使 a + b + c + d = target ?请在数组中找出所有满足各元素相加等于特定值的不重复组合.注意:解决 ...
 - 记录一个在线压缩和还原压缩js代码的工具
			
packer – javascript 压缩工具 http://dean.edwards.name/packer/ Javascript Beautifier ---可以恢复某些压缩工具压缩的js代码 ...
 - Java面向对象_简单工厂模式
			
概念:由一个工厂对象决定创建出哪一种产品类的实例. public class Practice14 { public static void main(String[] args) { // TODO ...
 - (转)linux磁盘分区fdisk分区和parted分区
			
linux磁盘分区fdisk分区和parted分区 原文:http://www.cnblogs.com/jiu0821/p/5503660.html ~~~~~~~~~~~~~~~~~~~~~~~~~ ...
 - Python 装饰器的形成过程
			
装饰器 定义:本质是函数,(装饰其他函数),即为其他函数添加附加功能. 原则: 1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式. 实现装饰器知识储备: ...
 - Hadoop文件压缩
			
1. Hadoop的文件压缩需求 文件压缩对于大容量的分布式存储系统而言是必须的,它能带来两个好处: 1)减少了文件所需的存储空间: 2)加快了文件在网络上或磁盘间的传输速度. 2. Hadoop支持 ...
 - Maven的学习资料收集--(七) 构建Spring项目
			
在这里,使用Maven构建一个Spring项目 构建单独项目的话,其实都差不多 1. 新建一个Web项目 参考之前的博客 2.修改 pom.xml,添加Spring依赖 <project xml ...
 - SpringBoot | 番外:使用小技巧合集
			
前言 最近工作比较忙,事情也比较多.加班回到家都十点多了,洗个澡就想睡觉了.所以为了不断更太多天,偷懒写个小技巧合集吧.之后有时间都会进行文章更新的.原创不易,码字不易,还希望大家多多支持!话不多说, ...