C++基础-类型转换-static_cast(基本类型转换) reinterpret_cast(指针类型转换) const_cast(const数据转换) dynamic_cast(父类子类转换)
2021/7/14 1:05:37
本文主要是介绍C++基础-类型转换-static_cast(基本类型转换) reinterpret_cast(指针类型转换) const_cast(const数据转换) dynamic_cast(父类子类转换),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.static_cast基本类型转换
int main1() { //printf("%d", 10.2); //printf("%f", (float)1); //printf不会完成数据类型转换 //printf("%d", static_cast<int>(10.2)); //默认转换 printf("%f", static_cast<float >(1)); }
2.reinterpret_cast(指针类型转换)
int main2() { int *pint = new int(1); char *pch = reinterpret_cast<char*>(pint); //指针类型转换 i for(int i = 0; i < 4; i++) { //显示数据, cout << static_cast<int>(*(pch + i)) << " "<< reinterpret_cast<void*>(pch + i) << endl; } cin.get(); }
3.const_cast(const数据类型转换)
int main3() { int num[5] = {1, 2, 3, 4, 5}; const int *p = num; //int *pint =reinterpret_cast<cint*>(int*)(p); reinterpret_cast不适于const int *pint = const_cast<int*>(p); for(int i = 0; i < 5; i++) { cout << pint[i] << " " << reinterpret_cast<void*>(pint + i) << endl; } cin.get(); }
4.dynamic_cast(父类子类转换)
//父类 class huahua { public: int hua1; virtual void run() { cout << "huahua is running" << endl; } }; //子类 class xiaohua: public huahua { public: int xiaohua1; void run() override { cout << "xiaohuahua is playing" << endl; } }; int main() { huahua *pfu = new huahua; xiaohua *pzi = new xiaohua; //创建一个父类对象以及子类 pfu->run(); pzi->run(); // huahua *phua = dynamic_cast<huahua*>(pzi); //子类对象转换为父类指针 // cout << reinterpret_cast<void*>(phua) << endl; // phua->run(); xiaohua *pxiaohua = dynamic_cast<xiaohua*>(pfu); cout << reinterpret_cast<void*>(pxiaohua) << endl; if(pxiaohua != nullptr) { pxiaohua->hua1 = 10; //访问子类继承父类对象的变量 pxiaohua->xiaohua1 = 10; pxiaohua->run(); //子类的对象 (*pxiaohua).huahua::run(); //子类中间父类的方法 } }
这篇关于C++基础-类型转换-static_cast(基本类型转换) reinterpret_cast(指针类型转换) const_cast(const数据转换) dynamic_cast(父类子类转换)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解