有时候,我们要转换为类类型和类类型,同时,这两个类继承关系不存在,这时候我们就需要一些所谓的转换操作符运营商.

一个简单的例子.类别A转换为int种类

#include <iostream> 

#include <string> 

using namespace std; 

class A{ 

private: 

int n; 

string str; 

public: 

A(int m,string s):n(m),str(s){ 

} 

}; 

int main(){ 

A a(10,"hello"); 

int m=a; 

cout<<"m="<<m<<endl; 

//string s=a; 

//cout<<"s="<<s<<endl; 

 

}

编译结果





可能你想将其强制转换.比如

int m=(int)a;

结果还是不行,由于编译器依旧不知道应该怎么转换.





这时候,就须要转换运算符了.

这个转换运算符的类型例如以下:

operator int ()const{

return n;

}

函数名为operator int ,这个函数是没有返回类型的,由于返回类型是通过运算符的名称确定的:int

同一时候应声明为const,由于不会改动被调用的对象.

整个程序例如以下:

#include <iostream> 

#include <string> 

using namespace std; 

class A{ 

private: 

int n; 

string str; 

public: 

A(int m,string s):n(m),str(s){ 

} 

operator int ()const{ 

return n; 

} 

operator string()const{ 

return str; 

} 

}; 

int main(){ 

A a(10,"hello"); 

int m=a; 

cout<<"m="<<m<<endl; 

string s=a; 

cout<<"s="<<s<<endl; 

 

}

执行结果:

类类型转换为基本类型是这样,相同,转换为其它类类型也是相同的道理.

#include <iostream> 

#include <string> 

using namespace std; 

class A{ 

private: 

int n; 

string str; 

public: 

A(int m,string s):n(m),str(s){ 

} 

A(string s){ 

str=s+" is called!"; 

} 

operator int ()const{ 

return n; 

} 

operator string()const{ 

return str; 

} 

void show()const{ 

cout<<"str="<<str<<endl; 

} 

}; 

class B{ 

private: 

string s; 

public: 

B(string str):s(str){ 

} 

operator A()const{ 

return s; 

} 





}; 

int main(){ 

 

B b("this is b "); 

A a=b; 

a.show(); 

 

}

结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE4NDQzNTIxNTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



这项,我们将不能够继承的类相同链上被转换!

版权声明:本文博主原创文章,博客,未经同意不得转载。

C++学习笔记33 转换操作符的更多相关文章

  1. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  2. [原创]java WEB学习笔记33:Session 案例 之 购物车

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. matlab学习笔记10_2 一般操作符

    一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德 ...

  4. C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象

    重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int v ...

  5. C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符

    重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...

  6. C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符

    重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪 ...

  7. python学习笔记七--数据操作符的优先级

    一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...

  8. Linux下汇编语言学习笔记33 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. Javascript学习笔记-基本概念-操作符

    1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...

随机推荐

  1. HTTP POST请求的Apache Rewrite规则设置

    最近自测后端模块时有个业务需求需要利用WebServer(我用的是Apache)将HTTP POST请求转发至后端C模块,后端处理后返回2进制加密数据.http post请求的url格式为:     ...

  2. 奔小康赚大钱 hdu 2255

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. [Xcode]some little skill

    Date:2014-1-2 Summary: 自己在使用Xcode的一些小习惯,记录下来,我是这么用的,你呢? Contents:1.使用#warning 在工作中,难免需要做一些test,但是又怕忘 ...

  4. 用C语言写解释器(一)——我们的目标

    声明 为提高教学质量,我所在的学院正在筹划编写C语言教材.<用C语言写解释器>系列文章经整理后将收入书中"综合实验"一章.因此该系列的文章主要阅读对象定为刚学完C语言的 ...

  5. Net 通常用于dll 第三方插件

    log4net.dll ----记录日志 本人用能够 pangu.dll ----分词工具 用于高级搜索  拆分字词 能够非常好用 fastreport --------高速制作报表工具 本人仅仅做过 ...

  6. Struts 2.x仍然明显落后于时代。 Struts 2.x这一类老牌Web MVC开发框架仅能用于开发瘦客户端应用,无法用来开发对于交互体验要求更高的应用。

    后来我在工作中陆续使用过Struts 1.x和Struts 2.x.我曾经把一个开源的基于Struts 1.x的自助式广告联盟应用移植到Spring MVC,还基于Struts 2.x做过网站开发.S ...

  7. c++ stl algorithm: std::fill, std::fill_n

    std::fill 在[first, last)范围内填充值 #include <iostream> #include <vector> #include <algori ...

  8. ByteBuffer和String的互相转换

    import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java ...

  9. hdu1054(最小顶点覆盖)

    传送门:Strategic Game 题意:用尽量少的顶点来覆盖所有的边. 分析:最小顶点覆盖裸题,最小顶点覆盖=最大匹配数(双向图)/2. #include <cstdio> #incl ...

  10. 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网

    [新提醒]随身wifi无法使用FAQ(不断更新中~~~~~~) - 使用问题 - 360官方论坛 undefined 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网 ...