C++学习笔记33 转换操作符
有时候,我们要转换为类类型和类类型,同时,这两个类继承关系不存在,这时候我们就需要一些所谓的转换操作符运营商.
一个简单的例子.类别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 转换操作符的更多相关文章
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
- [原创]java WEB学习笔记33:Session 案例 之 购物车
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- matlab学习笔记10_2 一般操作符
一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德 ...
- C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象
重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int v ...
- C++ Primer 学习笔记_60_重载操作符与转换 --赋值、下标、成员訪问操作符
重载操作符与转换 --赋值.下标.成员訪问操作符 一.赋值操作符 类赋值操作符接受类类型形參,通常该形參是对类类型的const引用,但也能够是类类型或对类类型的非const引用.假设未定义这个操作符, ...
- C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符
重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪 ...
- python学习笔记七--数据操作符的优先级
一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...
- Linux下汇编语言学习笔记33 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Javascript学习笔记-基本概念-操作符
1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...
随机推荐
- Oracle 验证IOT表数据存储在主键里
iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...
- data URI scheme及其应用
data URI scheme通俗的来讲就是将一张图片直接塞到HTML中而不是通过HTTP请求去获取.这样从表面上看会降低一次HTTP的请求,实现了对于网页的优化(只是看了其它一些文章data URI ...
- 一段代码让你秒懂java方法究竟是传值还是传地址
先看看代码以及执行结果: 凝视写得非常清楚了.我就不多说了. 我说说我的结论.事实上在java中没有传值还是传址的概念,java仅仅有引用的概念.引用类似传址.只是是一个变量名中保存着对象的地址,地址 ...
- 动态创建按钮的JS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEA ...
- 如何解决KEIL 5 编KEIL4同RTX系统的project解决方法
1.我个人KEIL5与KEIL4对照 相较于KEIL 5 的"华丽".笔者还是喜欢KEIL4的"内敛",主要也还是习惯了.懒得换了.由于工作的 原 ...
- JavaScript 基础优化(读书笔记)
1.带有 src 属性的<script>元素不应该在其<script>和</script>标签之间再包含额外的 JavaScript 代码.如果包含了嵌入的代码,则 ...
- 架设FLASH视频流server心得
什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是 ...
- python实现人人网用户数据爬取及简单分析
这是之前做的一个小项目.这几天刚好整理了一些相关资料,顺便就在这里做一个梳理啦~ 简单来说这个项目实现了,登录人人网并爬取用户数据.并对用户数据进行分析挖掘,终于效果例如以下:1.存储人人网用户数据( ...
- HDOJ 2736 Surprising Strings
Surprising Strings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- Windows编程之非模态对话框
1 创建非模态对话框 <1> HWNDCreateDialog( HINSTANCE hInstance, // handle to module LPCTSTRlpTemplat ...