| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++11四种强制类型转换 -> 正文阅读 |
|
[C++知识库]C++11四种强制类型转换 |
1.const_cast? ? ? ? 作用:去const化。 下面我们来看这个代码 ????????很容易就能够看出来错误是出现在哪里的,const是用来声明常量字段的,其定义的变量是不能够修改的。 ? ? ? ? 那么如何去修改这个变量呢?这个时候就可以使用const_cast了。const_cast可以去const化,以达到更改常量值的目的。 ? ? ? ? 我们使用引用,去用str1去引用str的值,改变str1即为改变str的值。 ? ? ? ? 运行查看输出结果,我们得到了更改后的str的值。由此得知,const_cast可以去引用化。 ? ? ? ? 但是需要注意的是,当我们使用int类型的时候,输出的却是1。这是因为编译器做了优化,声明了const的变量,我们就将其保存在符号表中,输出的是符号表中的内容。另外还需要注意const_cast中传递的需是引用或者指针类型。 ? 2.static_cast? ? ? ? static_cast用于将一种数据类型转换成另一种数据类型。比如: ? ? ? ? ?但是,它不能用于指针之间的类型转换。 ? ? ? ? ?但是,我们可以使用中间变量进行转换,可以先转换为万能指针void*,然后再从万能指针转换为想要的类型的指针。 ? 3.reinterpret_cast? ? ? ? reinterpret_cast的功能十分强大,可以强制转换任意类型。我们只需记住他可以指针类型之间的转换即可。 4.dynamic_cast????????将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数。? ? ? ? ? ? ? ? 使用dynamic_cast需要注意的是: (1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。 (2)不能用于内置的基本数据类型的强制转换。 (3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回 NULL。 (4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。 ???? 需要检测虚函数的原因:类中存在虚函数,就说明它想要有让基类指针或引用指向派生类对象的情况,此时转换才有意义。 ???? 向上转换:即为子类指针指向父类指针(一般不会出问题);向下转换,即将父类指针转换为子类指针。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:02:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |