C++中四种类型转换运算符的使用方法
C++的四个类型转换运算符已经有很久了,但一直没有弄清楚它们的用法,今天看到一本书上的解释,才大致地的了解了其具体的用法.
具体归纳如下:
reinterpret_cast
该函数将一个类型的指针转换为另一个类型的指针.
这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.
reinterpret_cast 可以将指针值转换为一个整型数,但不能用于非指针类型的转换.
例:
//基本类型指针的类型转换
double d=9.2;
double* pd = &d;
int *pi = reinterpret_cast(pd); //相当于int *pi = (int*)pd;
//不相关的类的指针的类型转换
class A{};
class B{};
A* pa = new A;
B* pb = reinterpret_cast(pa); //相当于B* pb = (B*)pa;
//指针转换为整数
long l = reinterpret_cast(pi); //相当于long l = (long)pi;
const_cast
该函数用于去除指针变量的常量属性,将它转换为一个对应指针类型的普通变量。反过来,也可以将一个非常量的指针变量转换为一个常指针变量。
这种转换是在编译期间做出的类型更改。
例:
const int* pci = 0;
int* pk = const_cast(pci); //相当于int* pk = (int*)pci;
const A* pca = new A;
A* pa = const_cast(pca); //相当于A* pa = (A*)pca;
出于安全性考虑,const_cast无法将非指针的常量转换为普通变量。
static_cast
该函数主要用于基本类型之间和具有继承关系的类型之间的转换。
这种转换一般会更改变量的内部表示方式,因此,static_cast应用于指针类型转换没有太大意义。
例:
//基本类型转换
int i=0;
double d = static_cast(i); //相当于 double d = (double)i;
//转换继承类的对象为基类对象
class Base{};
class Derived : public Base{};
Derived d;
Base b = static_cast(d); //相当于 Base b = (Base)d;
dynamic_cast
它与static_cast相对,是动态转换。
这种转换是在运行时进行转换分析的,并非在编译时进行,明显区别于上面三个类型转换操作。
该函数只能在继承类对象的指针之间或引用之间进行类型转换。进行转换时,会根据当前运行时类型信息,判断类型对象之间的转换是否合法。dynamic_cast的指针转换失败,可通过是否为null检测,引用转换失败则抛出一个bad_cast异常。
例:
class Base{};
class Derived : public Base{};
//派生类指针转换为基类指针
Derived *pd = new Derived;
Base *pb = dynamic_cast(pd);
if (!pb)
cout << "类型转换失败" << endl;
profile.yahoo.com/6FUG3TSOMSITXJZMLMXVQ7KGGQ/
profile.yahoo.com/CJMWZL4ZNPWTZXPE4JCNYV3I54/
profile.yahoo.com/HS6YYCHMO7ID6OZV7NZ7L5FKSE/
profile.yahoo.com/3XGXYPZT3THKPVQ4TXQHCKHMXY/
profile.yahoo.com/GSNGQ2AINGGHGYHE4KY5MWXE2Y/
profile.yahoo.com/74RCKJTYJPA6NKLJI6KFMDNOUI/
profile.yahoo.com/WII2LSXESPSRKXWLMIKLHRGASQ/
profile.yahoo.com/JDVQEWPPQ66PUK47BZO7676MSE/
profile.yahoo.com/KQ73BQMAD42JLAW4TQYFPZHYME/
profile.yahoo.com/A3TBERS7KPAATC6M2MUDIEPPHE/
profile.yahoo.com/ME3RBTE7XV7H7OISWPBJBU4Q2A/
profile.yahoo.com/UUCTVBCHN5P3O22GSY2Y4LS3KM/
profile.yahoo.com/5DD42LIOWIVEC3C3LLVB4IR6L4/
profile.yahoo.com/YJTU4JNJCMGNSJA4BROIV5367E/
profile.yahoo.com/ACH7ALTJKXM3ZMTUH37TJMM4HU/
profile.yahoo.com/UNIRWHYVEDBUOUH7LWSM3KLCYI/
profile.yahoo.com/OLM6OCA6DCJW34V5RFQHB5S3U4/
profile.yahoo.com/5A3NBCAMAN5GHARA44FIPLAPE4/
profile.yahoo.com/IDZAQHNCQKXQU6267CN4AGOVMA/
profile.yahoo.com/FHMIPWZ5CQ2IGX3V2JGXSIWURU/
profile.yahoo.com/NF3376KORFLV5QWIEULSFTRLLQ/
profile.yahoo.com/VCZ2W47EE6V6GL7CYYXXYXR2NA/
profile.yahoo.com/KZ3GGY3HHEZ4O3Z73DS3KY7OAI/
profile.yahoo.com/JXCJSHKPCPVXBOQ7J534QFVINQ/
profile.yahoo.com/3EOKGCUUHMX22KIAI7GML5AUCI/
profile.yahoo.com/FUO6MOEDGUSYPEOIJUHQJPXU7U/
profile.yahoo.com/F6BNCL7UA4N2QU4VU7TQS4GMLE/
profile.yahoo.com/GKR4HD2WEEDOSAOEBLLVPT4BGM/
profile.yahoo.com/F4DSPOKAULYUURHT5Q2GHGRP74/
profile.yahoo.com/CAPYUDHYGK4T5OC376VAIQF6JU/
profile.yahoo.com/RL73T5NKKMIA5ATI4UOXVNYJCE/
profile.yahoo.com/PYFFJ2FNCM72O7GP7JSVLEHCTY/
profile.yahoo.com/YV4MGP3T7PLUT5Q66JR7B6NIBU/
profile.yahoo.com/Z6UG6LBRTTF7ADW4437WKUDXGU/
profile.yahoo.com/ZAWGBC2HZG3G5S5IBOVTVMNJ2A/
profile.yahoo.com/IEOM46P5K6FMQVAEFUL2735D6U/
profile.yahoo.com/JHLVQLSGI36ARJGGVCQOHYPDQI/
profile.yahoo.com/3YAUGQDSUIOIUNT7VJJTJYTJZE/
profile.yahoo.com/GEJCGLX3RSX3CFXZN7ZQ45V5RE/
profile.yahoo.com/SWFT4BQFW5YV652VO3AAR7GVY4/
profile.yahoo.com/QEWPERHSO5CGAZIW26TUPK7I3U/
profile.yahoo.com/JK26UMRCUXDVDMY6BYNVOOJYUE/
profile.yahoo.com/Y5YATSDLQWP2DY2ZRYUU3YVGP4/
profile.yahoo.com/WSRRX26XRWVJJTE5LU35MY5RLA/
profile.yahoo.com/CNA5EDOG7RO4LXDA5UBF3VGW2Y/
profile.yahoo.com/QRLN2PRXNB7CSDE6Q3766RUHVQ/
profile.yahoo.com/NYOIMY4DNKTLKEX2KA4XYNUWFA/
profile.yahoo.com/35IZIGSXVKERCC6RBFEBSSKKJ4/
profile.yahoo.com/VU6OYHDP5HAEJKYS5T3IALIALM/
profile.yahoo.com/J6NTXRNENOJ3TU47SYQ4PAHNOM/
profile.yahoo.com/Z5QEHIJUQ47BBSF4P3RQ6344DY/
profile.yahoo.com/VILU55D3NKY5NUXNOQC6H573LE/
profile.yahoo.com/3R63NVDVAF4EDRGYZA7BIVAONI/
profile.yahoo.com/EI2TDGGO55AFBU6XWSQPS7LYOA/
profile.yahoo.com/3EFNWKN37P2723HJW5LVKOPWBA/
profile.yahoo.com/MAXO4UZIPIWUTCND6ASAKUJYXM/
profile.yahoo.com/EZSBG26PW76LSBEVG3MZRG27XM/
profile.yahoo.com/YMK3J3VRN5LBUPYKV3NJHRPPHQ/
profile.yahoo.com/SVTB5BBL5ONCCFPJKAG4QJ44RM/
profile.yahoo.com/M5NIB6Q6BWRLYNRSVD2L2MNZJ4/
profile.yahoo.com/762NN2FKDNPQSVJLCMW6UJBHDI/
profile.yahoo.com/C6SLU4RABJPNBTKAEE6WAHJSQM/
profile.yahoo.com/7U43VP2ZEKEQ76S53UUNORXDMQ/
profile.yahoo.com/SU3FWXSQEFFU2YEY3PXWLIHBMQ/
profile.yahoo.com/JZ64JDPIYNDW7FVNMPXYNFQFKY/
profile.yahoo.com/FWBCGTP53CM7Z3SUZZS7GS3XX4/
profile.yahoo.com/EKNBCOQEFJBPFUPDUXCMXERD7E/
profile.yahoo.com/MGUXIKNVGJI62IHIEPB3MJ7HQU/
profile.yahoo.com/USMC6OT4BWG3YVZBGCOJKSWSHA/
profile.yahoo.com/VYKK4W6SLKVZXG5GCOPJQAP75U/
profile.yahoo.com/WMWS4L4MBNDU5NUPHBMKDY45QY/
profile.yahoo.com/PIS3KRCPGYH74IYX3MGQB5U6JM/
profile.yahoo.com/XF4NZ542TO7BS5MOGATNG3USVI/
profile.yahoo.com/UEM55PGXUN4MP4FECICJNORYPU/
profile.yahoo.com/4CVJTJ4ELRIV7X6HHZGRA4CR3Q/
profile.yahoo.com/WCBQZRW6U6XEZ3HBIOI3WIYFSQ/
profile.yahoo.com/RPHOWRTWXIVOHJDCHLZYIKR2WE/
profile.yahoo.com/X357ROFRNJNRYMZJMGEXNHTVWI/
profile.yahoo.com/5MOBSZ3CHMLO53CLEASO3EGQDY/
profile.yahoo.com/GCF4SSTXUX3RD24LTH54HIAOIE/
profile.yahoo.com/56UPEH6Z3QATUESZTB7CMTYTUQ/
profile.yahoo.com/OEOJYUVCVHBSKL74VIPNW4N5F4/
profile.yahoo.com/LFJP45USYC47T2DXSGZLUAJZYU/
profile.yahoo.com/VDX7NO4JA6DIG3I4PZTJ7EVV6U/
profile.yahoo.com/HKLGNUMAOIDKTMV3CDYGRJEXCA/
profile.yahoo.com/JTT74DDVUROQTMBCRLELTBAN7M/
profile.yahoo.com/L65HKC24BEMM74GDDQFHXP2A4M/
profile.yahoo.com/SLCNYRLUCPZR7BQPJ7XHWYHM5Q/
profile.yahoo.com/Q34AC6HMZ3REC5Q7ARCWZZQGRI/
profile.yahoo.com/4ALSGIV44UICTUOIY74NQT6IV4/
profile.yahoo.com/LDRKGLODVYLCCC5GBEQ7LVGULE/
profile.yahoo.com/OOMLENV3IGWPEZHTRQS3NDBDXM/
profile.yahoo.com/2YMAYSDEMMPJRRTC2W6SALQPCE/
profile.yahoo.com/TGY5XVMVNWVQUMKZRUHVY76OYY/
profile.yahoo.com/44DMJIDUXTTRDQ7ZNTV3RXAYRI/
profile.yahoo.com/UQ4IYBETUY5YXQXRERUE54P7EI/
profile.yahoo.com/RXNACSDGQGOZIR63XQLUBN4LFI/
profile.yahoo.com/KFUX4FW3GD4JRUQ4UV2XBDV7DU/
profile.yahoo.com/RKBV43WS3WPC3KIMJQ4IGTYQRQ/
profile.yahoo.com/BRSQ3P4ZBEFEPGWXECRPDOZ3WU/
profile.yahoo.com/O2GJWZX5WK45ALUQ77FPE5WSGA/
profile.yahoo.com/5A5WTCXH5XGOW3D4CJAAF6VB2M/
profile.yahoo.com/UVY3SDDUDNJNEDKFG45QZ6532M/
profile.yahoo.com/DMVBIHULCBR4OAFZWFALF6JRDA/
profile.yahoo.com/5BO466WFLLC25UJAYPLAWIHTFM/
profile.yahoo.com/UIVTAWNS6LXIE7JOJW5BW5DT2E/
profile.yahoo.com/ZCQXGQIPM53ZX6NGZAEW5DJKAA/
profile.yahoo.com/LOHZRZDG5F7JJLGLUN3MTPFZUU/
profile.yahoo.com/A3L7T52LXHCCSOWOJ6WFYW37QE/
profile.yahoo.com/J7MSLMKKAYAPLO5NDTMC4XIXYA/
profile.yahoo.com/LKTQ4EKICBLVXWYXTXUD3ASBVI/
profile.yahoo.com/LOR2BH4DF6WASERGGND6EBKPZM/
profile.yahoo.com/II3E7O5RQ7GZ7XPEYF2AJWDCQA/
profile.yahoo.com/DYDQM24RJSI3WSDDWGLGNCUK4A/
profile.yahoo.com/YKODTTBDER7IID6B4CJVYCTJWE/
profile.yahoo.com/UND4IWNLWFAYRJNKV5UATMUPBQ/
profile.yahoo.com/37HPFCZRAM6WF3UPOGJLK54O54/
profile.yahoo.com/4B62WGM4KZMJA4FHWNFGG2OBH4/
profile.yahoo.com/TMVRYKMFRYNPBAY5CILZS7722A/
profile.yahoo.com/MRCEISRAL4JHMPSPGGIGNOSC3M/
profile.yahoo.com/WZMZ7345NIHCMYZK2UUE2EFMYM/
profile.yahoo.com/BNQ33W6FUPMLVJJVK4XIYCSUIA/
profile.yahoo.com/KNOK4EDWXXTDLD4GBTMNCIQVIE/
profile.yahoo.com/VJA6FXHG6C6KATX53SC7OCPM6Q/
profile.yahoo.com/G6TN6WN6NIJYRSQUENJT7QCNVA/
profile.yahoo.com/KMD2WJYSQW7YRDTU5Q7HB3JHYQ/
profile.yahoo.com/ZSIZEEVM3ZJJ2V45EX7CC5522Y/
profile.yahoo.com/R7TQZRFG3BPDLPFNAGWL55FLDY/
profile.yahoo.com/YDL3WOIAXTUFAHI7LPT6TAYX34/
profile.yahoo.com/337ZFW6LOECP4X7LM3HY2MNLN4/
profile.yahoo.com/3QVEWKA4LKH3GB25ZNJHRDYI34/
profile.yahoo.com/5NDFYSLKXL6U4W7PLS63T63ZWY/
profile.yahoo.com/SMV54Y77QHXMLGAJZBFPIPSH24/
profile.yahoo.com/MUBWEHALLEHV4LR5O32GEZWAUE/
profile.yahoo.com/GQ32APIGQLJQVTSMC7XPJ6K47Q/
profile.yahoo.com/LQSUPOYMSOHDU6WQHK5HX3X6ZI/
profile.yahoo.com/3WUBNZCD7PUMCFUL7NKHZKAL3Y/
profile.yahoo.com/75TLCBFPSYFL2T42WPJ2NHTVRU/
profile.yahoo.com/IM7JPUX4OD2U6RCEDGN7QHQ74U/
profile.yahoo.com/VONWYO4GBGOQHJEC233TLVSHTE/
profile.yahoo.com/D5WP6VAWLFOHX5N7ECXCHCIBII/
profile.yahoo.com/YE6LROZT5FCB6NOYGEGL4MK3IU/
profile.yahoo.com/IBUIGON6CSXS3DTWJ2T7GIZR44/
profile.yahoo.com/VXA44ZSHTOFUJES4IBVMACL3MU/
profile.yahoo.com/SLVJ3TSMUL4AUVFQ7XPFIVRANA/
profile.yahoo.com/IB66CD5OSQ25D6HJYEBU7Q6JNU/
profile.yahoo.com/QNQKN6CV3NZHBJ6ZPSUDO3TMEM/
profile.yahoo.com/HO5HVR2TNKEHRV5HJFHHRTWMKA/
profile.yahoo.com/LJWJB6T5KNTTTLTN7SZQXKI2U4/
profile.yahoo.com/IK36FB3THEXIDK4S6YQOCRE3IY/
profile.yahoo.com/2SLY3CP3MOSHI7XB55GTFDVJH4/
profile.yahoo.com/IV7XJBLDKMB3UPJ4WGUYLPETQY/
profile.yahoo.com/KCHSQ4K7XBCD2RDVSI7DM7XJVU/
profile.yahoo.com/XGB6WOYS3CJ5EZXGXFRZIDKG6I/
profile.yahoo.com/BJ2YUMSQ742A37SZZAPHKNOYF4/
profile.yahoo.com/QBCMNI5UZ3L3XQ467ACEEXP2IY/
profile.yahoo.com/6ML4W232GAILTMTAKRULN32OQ4/
profile.yahoo.com/GYLZ5YBUWXK7VBIGIPQMXYEKHE/
profile.yahoo.com/YE355A7JS3CVE2XTZ6RRR5YTGU/
profile.yahoo.com/CL5FD4BWVR3HN46BCGPUUU4DLY/
profile.yahoo.com/N5K6PXKV3NOZLJEFNSSAGJEO5E/
profile.yahoo.com/YGLYTMUF5WGQIFL7NRWKADTDKM/
profile.yahoo.com/NHNQWTKUMFLEPFEZHZIKMJ5OZM/
profile.yahoo.com/MIZNEDMV62FSJDCCJYHNHD5Y4U/
profile.yahoo.com/3LKFYMWF33DWR4DCTIMNWKUGWY/
profile.yahoo.com/ABIJHVOWO7CUIOURWIGHPQ747U/
profile.yahoo.com/BTV5CWUM737QFZBUJ6K34AG4FI/
profile.yahoo.com/IL52HCONDNOWO25AEFMF3CHI4Y/
profile.yahoo.com/MPOTRKOJHWAEOS4KT2GY43SUSU/
profile.yahoo.com/NXEZDCEEGLIHFLJ3FRV6MZKILM/
profile.yahoo.com/WSPLRRSF7XB4EAHBNP3K4PMT54/
profile.yahoo.com/QQE7EKSOLFZRDSDKQHNTFKMLZU/
profile.yahoo.com/A7VZHQL6JEQVD7RZ3TFASQHYQQ/
profile.yahoo.com/PCTOLW55PAJ2IS76ELUCHMWB3A/
profile.yahoo.com/ESSVIGYULLRJBTNXLBONLZZTJI/
profile.yahoo.com/T73OV63XUR5DIH3HXPQJVUUR54/
profile.yahoo.com/WM5ACXPIWUXR3H7B5YB2C3DMKQ/
profile.yahoo.com/I5K2D3USGY6E6ZP6KQACPZ3VTQ/
profile.yahoo.com/ESRXM6P42GJPWJHWXABFSMGEPE/
profile.yahoo.com/UW5CPWKVHXD7NUNCNHAMK7HE3E/
profile.yahoo.com/7ZYAJKJVPXFVSRVUPAYV3Y4JVM/
profile.yahoo.com/VENORY56OMWF3B4CG252522POM/
profile.yahoo.com/MWYQNSPNKKXLTLPRGAS7SHBNF4/
profile.yahoo.com/REZJJWPT4L6WIFDOLTRI44EYTY/
profile.yahoo.com/WPJQ435V4M7JJ22GQLYXZUPNFA/
profile.yahoo.com/JD427N3F43RQ42IFWQULKLKGOE/
//没有继承关系,但被转换类有虚函数
class A(virtual ~A();) //有虚函数
class B{}:
A* pa = new A;
B* pb = dynamic_cast(pa);
如果对无继承关系或者没有虚函数的对象指针进行转换、基本类型指针转换以及基类指针转换为派生类指针,都不能通过编译。
C++中四种类型转换运算符的使用方法相关推荐
- 电子计算机机房折旧提几年,IDC设备资产运营中四种“折旧率计算”的常见方法...
原标题:IDC设备资产运营中四种"折旧率计算"的常见方法 数据中心基础设施设备管理中设备的折旧是固定资产的折旧.该基础设施设备或者IT设备在长期使用后仍可保持其原始物理形态,但由于 ...
- C++中四种类型转换方式
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a,但是c 风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型 ...
- C++中四种类型转换方式(ynamic_cast,const_cast,static_cast,reinterpret_cast)
Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而 ...
- C++ 四种类型转换运算符
隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么. 但是,这种强调风险的方式还是比较粗放,粒度比较大,它并没有表明存在什么 ...
- C++中四种类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast要点解析
1.static_cast typename dst_ptr = static_cast<typename> (src_ptr) 可用于c++基本类型之间的转换,子类与派生类之间的指针转换 ...
- Java中四种遍历Map对象的方法
方法一:在for-each循环中使用entry来遍历,通过Map.entrySet遍历key和value,这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Int ...
- Houdini中四种实现龙卷风速度场的方法及比较
龙卷风的实验断断续续持续了较长一段时间,主要是想通过这个方式把流体的速度场和力场好好磨一磨,之前一直觉得流体的形态可控性不高,所以希望能找到一些方法或者经验能够摸透流体的运动. 说到龙卷风大家都不陌生 ...
- C++中四种cast转换
C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast 1.const_cast 用于将const变量转为非const ...
- C++四种类型转换总结
来源:微信公众号「编程学习基地」 文章目录 类型转换 C语言类型转换 C++类型转换 const_cast 去常属性 寄存器骚操作 关键字volatile reinterpret_cast重解释 st ...
最新文章
- vue获取“分享给朋友”按钮点击状态及自定义分享内容接口
- java最长回文子序列_LeetCode[5] - 最长回文子串动态规划
- 恢复VMware vSphere已孤立的虚拟机
- python没有库_Python开发者必备6个基本库,这个都没有怎么做开发呢
- ubuntu安装配置elasticSearch(vagrant)
- MagicRecord For IOS API深层解析
- 【ES11(2020)】新增数据类型 BigInt
- @Transactiona注解的使用
- Atitit 提升开发效率 设计简化 目录 1. 防止过度设计	1 2. 优先使用db和os的自带功能,防止垃圾代码膨胀	2 2.1. 定时调度,优先使用db定时和os的cron定时	2 2.2
- Windows下制作苹果电脑U盘启动
- T和T’触发器的特点和区别
- pytorch 模型微调
- Linux系统之安装mariadb方法
- Vue3.0 中的数据侦测
- 转行智能控制的这些年
- Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯...
- SystemInfo
- Nginx实现前后端分离(springboot+vue)+双机互备
- android原生见缝插针游戏自定义控件源码
- IPO是终点,还是起点?
热门文章
- wireshark使用及过滤器介绍
- 【华为机试真题 Python】窗口滑动和最大值
- 用vb.net制作贪吃蛇游戏
- iOS触动精灵模拟触控类外挂原理分析
- 家装灯线走线图_二十年资深装修电工是如何布线的?家庭装修电工布线图详解...
- C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖
- cad转换器高版本转低版本_excel 高版本保存为低版本方法教程
- pcmcia oracle vm vitualbox 虚拟机,virtualbox中调整虚拟机的硬盘大小 与 CentOS卡在进度条启动缓慢进不去解决办法...
- Seaborn系列| 绘制相关性热图(仅显示下三角相关性)
- 奇思妙想:小程序wxapkg包一键运行至浏览器是什么操作?