C++类型转换基本语法

static_cast 用于内置的数据类型
还有具有继承关系的指针或者引用

代码如下:

#include <iostream>
using namespace std;class Building {};
class Animal{};
class Cat:public Animal{};int main()
{int a = 97;char c = static_cast<char>(a);cout << c << endl;int *p = nullptr;//char *sp = static_cast<char*>(p); 转不了Building *building = nullptr;//Animal *ani = static_cast<Animal *>(building); 转不了//父类指针转成子类指针Animal *ani = nullptr;Cat *cat = static_cast<Cat*> (ani);//子类指针转成父类指针Cat *soncat = nullptr;Animal *anifather = static_cast<Animal *> (soncat);Animal aniobj;Animal &aniref = aniobj;Cat&cat = static_cast<Cat &>(aniref);Cat catobj;Cat & catref = catobj;Animal & anifather2 = static_cast<Animal &> (catref);return 0;
}

dynamic_cast 转换具有继承关系的指针或者引用,在转换前会进行对象类型检查,只能由子类型转换为基类型。

子类指针可以转换为父类指针(从大到小),类型安全。

父类指针转成子类指针(从小到大),不安全。

代码如下:

#include <iostream>
using namespace std;class Building {};
class Animal{};
class Cat:public Animal{};int main()
{int a = 10;//char c = dynamic_cast<char>(a);  转换不了Animal *ani = nullptr;//Building *building = dynamic_cast<Building *>(ani);  转换不了Animal * ani = nullptr;//Cat * cat = dynamic_cast<Cat *>(ani);  转换不了Cat * cat = nullptr;Animal *ani = dynamic_cast<Animal*>(cat);return 0;
}

const_cast增加或者去除变量的const性。

代码如下:

#include <iostream>
using namespace std;class Building {};
class Animal{};
class Cat:public Animal{};int main()
{int a = 10;const int &b = a;int &c = const_cast<int &>(b);c = 20;cout << a << endl;cout << b << endl;cout << c << endl;const int *p = nullptr;int *q = const_cast<int*>(p);int *p3 = nullptr;const int *p4 = const_cast<const int *>(p3);return 0;
}

reinterpret_cast 强制类型转换

代码如下:

#include <iostream>
using namespace std;class Building {};
class Animal{};
class Cat:public Animal{};int main()
{Building *building = nullptr;Animal *ani = reinterpret_cast<Animal *> (building);typedef void(*FUNC1)(int, int);typedef int(*FUNC2)(int, char*);FUNC1 func1;FUNC2 func2 = reinterpret_cast<FUNC2>(func1);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java arraylist 源代码_java中ArrayList的源代码是什么

展开全部package java.util;public class ArrayList extends AbstractListimplements List, RandomAccess, Cloneable, java.io.Serializable{private static final long serialVersionUID 8683452581122892189L;/*** The array buffer into which the elements of the ArrayL…

在阿里云函数计算上部署.NET Core 3.1

使用阿里云ECS或者其他常见的VPS服务部署应用的时候&#xff0c;需要手动配置环境&#xff0c;并且监测ECS的行为&#xff0c;做补丁之类的&#xff0c;搞得有点复杂。好在很多云厂商&#xff08;阿里云、Azure等&#xff09;提供了Serverless服务&#xff0c;借助于Serverless…

[PAT乙级]1023 组个最小数

给定数字 0-9 各若干个。你可以以任意顺序排列这些数字&#xff0c;但必须全部使用。目标是使得最后得到的数尽可能小&#xff08;注意 0 不能做首位&#xff09;。例如&#xff1a;给定两个 0&#xff0c;两个 1&#xff0c;三个 5&#xff0c;一个 8&#xff0c;我们得到的最…

C++中函数调用时的三种参数传递方式(x,*x,x)

先看三种方式实现函数中参数传递的实例程序 输入描述&#xff1a;两个待交换的整数程序输出&#xff1a;交换后得按值传递两个整数&#xff08;一&#xff09;按值传递&#xff1a;按值传递的过程为&#xff1a;首先计算出实参表达式的值&#xff0c;接着给对应的形参变量分配…

java 持续交付_【Java架构:持续交付】一篇文章搞掂:Jenkins

1.1、使用yum安装JDKa、检查系统是否有安装open-jdkrpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gcj如果没有输入信息表示没有安装。如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件 这句命令的关键字是javab、检索yum中包含…

抱歉,请不要把 “业务逻辑层” 理解为 “业务中台”

这是头哥侃码的第197篇原创在IAS2019中台架构峰会上&#xff0c;我曾与一位年轻帅气的技术小伙来了一番有趣的对话。因为和朋友有约&#xff0c;所以我在现场互动结束之后&#xff0c;就急匆匆地跟其他嘉宾打了声招呼&#xff0c;抱着笔记本冲出了会场。但没想到刚到电梯口&…

C++异常处理分析

C异常处理基本语法: 代码如下: #include <iostream> using namespace std;int divide(int x, int y) {if (y 0) throw y;return x / y; }void test01() {//试着去捕获异常try{divide(10, 0);}/*catch (int){cout << "除数为0!" << endl;} */catc…

java文件损坏_java – 损坏的文件处理

我想知道如果任何人有任何建议处理损坏的文件与Apache POI我试图打开一个文件&#xff0c;并收到此消息&#xff1a;Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x1C left 2 bytes …

Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)

题意&#xff1a;让我们求f&#xff08;n&#xff09;n/1n/2n/3......n/n&#xff1b;同时注意n/i取整&#xff1b; 思路&#xff1a;首先我们先看数据的范围&#xff0c;n (1 ≤ n < 2 31)&#xff0c;数据范围太大&#xff0c;如果我们按 照题目中的代码直接暴力肯定超时…

陌陌的 Service Mesh 探索与实践

Service Mesh Virtual Meetup 是 ServiceMesher 社区和 CNCF 联合主办的线上系列直播。本期为 Service Mesh Virtual Meetup#1 &#xff0c;邀请了四位来自不同公司的嘉宾&#xff0c;从不同角度展开了 Service Mesh 的应用实践分享&#xff0c;分享涵盖来自陌陌和百度的 Servi…

C标准输入流

标准输入流对象cin&#xff0c;重点掌握的函数: cin.get()//一次只能读取一个字符 cin.get(一次参数)//读一个字符 cin.get(两个字符)//可以读字符串 cin.getline() cin.ignore() cin.peek() cin.putback() 标准输入流cin.get() 代码如下: #include <iostream> using n…

Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)

题意&#xff1a;求f(n)1/11/21/31/4…1/n (1 ≤ n ≤ 108).&#xff0c;精确到10-8 (原题在文末&#xff09; 知识点&#xff1a;调和级数(即f(n))至今没有一个完全正确的公式&#xff0c;但欧拉给出过一个近似公式&#xff1a;(n很大时) f(n)≈ln(n)C1/2*n 欧拉常数值&…

教你配置windows上的windbg,linux上的lldb,打入clr内部这一篇就够了

一&#xff1a;背景1. 讲故事前几天公众号里有位兄弟看了几篇文章之后&#xff0c;也准备用windbg试试看&#xff0c;结果这一配就花了好几天&#xff0c;(づ╥﹏╥)づ&#xff0c;我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题&#xff0c;所以我觉得有必…

vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子

vuelayui实现select动态加载后台数据的例子发布时间&#xff1a;2020-09-18 22:51:36来源&#xff1a;脚本之家阅读&#xff1a;85作者&#xff1a;qq_26814945刚开始由于layui form渲染与vue渲染有时间差 有时会导致 select里面是空白的后来就想办法 等vue数据渲染完 再渲染la…

Rochambeau POJ - 2912 (枚举和加权并查集+路径压缩)找唯一裁判

题意&#xff1a;有n个人玩石头剪刀布&#xff0c;有且只有一个裁判。除了裁判每个人的出拳形式都是一样的。 a<b表示b打败a&#xff0c;ab表示a和b出拳一样&#xff0c;平手。a>b表示a打败b。 给出m个回合的游戏结果&#xff0c;问能否判断出谁是裁判&#xff1f;如果能…

C标准输出流

标准输入流对象cin&#xff0c;重点掌握的函数: cout.flush()//刷新缓冲区 cout.put()//向缓冲区写字符 cout.write()//二进制流的输出 cout.width()//输出格式控制 cout.fill() cout.set(标记) cout.flush() 代码如下: #include <iostream> using namespace std;void…

Autofac在.NET Core 中的使用

前言Autofac 是一款.NET IoC 容器 . 它管理类之间的依赖关系, 从而使应用在规模及复杂性增长的情况下依然可以轻易地修改 。.NET CORE 中也内置了依赖注入&#xff0c;但是有些情况下需要用到Autofac去进行依赖注入&#xff0c;Autofac支持的所有注入方式以外&#xff0c;还支持…

Aladdin and the Flying Carpet (素数打表+正整数的唯一分解定理,找因数对)

题目大意&#xff1a;给两个数a&#xff0c;b&#xff0c;求满足c*da且c>b且d>b的c,d二元组对数&#xff0c;(c,d)和(d,c)属于同一种情况 题目分析&#xff1a;根据唯一分解定理先将a唯一分解&#xff0c;则a的所有正约数的个数为ans (1 a1) * (1 a2) *...(1 an) 因为…

C++文本文件操作和二进制文件读写

文本文件操作: 代码如下: #include <iostream> #include <fstream> using namespace std;void test01() {const char *fileName "C:\\Users\\Tom\\Desktop\\hhh.txt";//ifstream ism(fileName, ios::in);//只读方式打开文件ifstream ism;ism.open(file…

java类结构工具_java类层次结构图工具

Java主类结构_计算机软件及应用_IT/计算机_专业资料。Java主类结构 谢谢大家! Java主类结构 谢谢大家! 申请认证 文档贡献者 胸兢谙韶硛蠌 中西医 59981 ......知识结构类思维导图模板:java知识结构。{"code":&...所有这些都遵从 Spring 的通用事务和 DAO 异常层…