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_;
};
 
 
 
 
2、 操作隐式转换
C++可以通过operator实现重载隐式转换,格式如下: operator T (),其中T是一个类型,比如下面这个例子

class A
{
public:
explicit A(int b=){
b_=b;
}
operator int() { return this->b_; } private:
int b_;
}; int main()
{
A a;
int b=a;
cout<<b;
return ;
}
当执行b=a时a就发生了隐式类型转换,实际上执行了a.opertor int()函数 即
int b=a相当于 int b=a.b_

 

operator用法:隐式类型转换的更多相关文章

  1. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  2. C++ 中operator用法:隐式类型转换

    [转]C++ operator两种用法 C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator c ...

  3. 重载符operator() -- effective c++ 3rd P71的的隐式类型转换及相关的研究

    class的"operator 返回类型 ()" 的重载 就是对(class)的重载,这个重载符不用参数,参数就是自身,并且与函数传递的参数括号等价 如 func(c), 并且多个 ...

  4. dynamic_cast 和 static_cast 隐式类型转换的区别

    首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion ...

  5. C++的隐式类型转换与转换操作符

    C++标准允许隐式类型转换,即对特定的类,在特定条件下,某些参数或变量将隐形转换成类对象(创建临时对象).如果这种转换代价很大(调用类的构造函数),隐式转换将影响性能.隐式转换的发生条件:函数调用中, ...

  6. C++的隐式类型转换

    C++是一种复杂的语言,其中有许多“好玩”的特性,学习C++的过程就像在海边捡一颗颗石头,只要坚持不懈,也许一颗颗小石头也能建起你自己小小的城堡. 废话完后,讲讲自己捡到的石头:隐式类型转换 学习出处 ...

  7. 【M21】利用重载技术避免隐式类型转换

    1.考虑UPint 的加法+,UPint a, b, result; 为了使result = a+10; result= 10+a; 都能通过编译,操作符重载如下: const UPint opera ...

  8. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 操作符重载和隐式类型转换

    C#中,某些类型会定义隐式类型转换和操作符重载.Unity中,有些对象也定义了隐式类型转换和操作符重载.典型情况有:UnityEngine.Object.UnityEngine.Object的销毁是调 ...

  9. C++进阶--隐式类型转换

    //############################################################################ /* 隐式类型转换 * * 类型转换可分为 ...

随机推荐

  1. java基础知识—循环结构

    1.while 循环 语法: while(循环操作){ 循环操作: } 特点:先判断,再执行:2. == : 用于数字比较 比较的是地址 equals: 用于字符串比较 比较的是字符 3.do-whi ...

  2. js的观察者模式

    观察者模式(发布-订阅模式):它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体 ...

  3. python代码规范和命名规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  4. classPath与PATH

    PATH是window的变量,而不是Java的变量: 通常配置PATH路径是为了找到需要的XX.exe命令,而且配置在用户的变量下面: 例如:JDK中的javac与java命令在cmd中使用,需要把命 ...

  5. java发送soapui格式的报文

    import java.io.*;import java.net.HttpURLConnection;import java.net.URL; 使用java对soapui报文进行发送 public c ...

  6. shell 删除颜色代码

    sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

  7. Delphi7连接MySql数据库-DBGrid控件显示数据

    一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...

  8. python学习笔记——(一)基础设置

    python的学习,今天就开始上开发环境Pycharm,这样以后在调试,使用和学习起来就方便很多. 我用的是JetBrains PyCharm Community Edition 2018.1.1 x ...

  9. 安装mingw编译器

    1.下载地址:https://sourceforge.net/projects/mingw/files/latest/download?source=top3_dlp_t5 2. 安装下载的(ming ...

  10. Zedboard搭建Linux嵌入式环境

    ZYNQ是ARM硬核和PL软核的结合体,Xillybus官方为他开发了驱动套件Xillinux,赶快将开发板投入使用吧! 本随笔参考了众多博主和官方教程:(基本上就是把官方教程翻译了一遍,呵呵:)) ...