C++ 类型强转
C++ 类型
2023-09-11 14:13:59 时间
class A {};
class B : public A {};
int main()
{
// static_cast:在编译期间完成类型转换
float f_a = 1.123456;
cout << "f_a = " << f_a << endl;
int i_a = static_cast<int>(f_a);
cout << "i_a = " << i_a << endl;
void* vp_a = "123456";
cout << "(char*)vp_a = " << (char*)vp_a << endl;
char* cp_a = static_cast<char*>(vp_a);
cout << "cp_a = " << cp_a << endl;
// const_cast:用于 const 转 非const,且<>中只能是指针或引用
const int ci_a = 1;
int* pi_a = const_cast<int*>(&ci_a);
*pi_a = 10;
cout << "ci_a = " << ci_a << endl;
cout << "*pi_a = " << *pi_a << endl;
// reinterpret_cast:直接修改二进制,功能强大但风险也大。比如下面代码使用 static_cast 就会出错,但 reinterpret_cast 就可以编译成功
int* pi_b;
double* pd_a = reinterpret_cast<double*>(pi_b);
// dynamic_cast:用于类的转换
B* b;
A* a;
a = dynamic_cast<A*>(b);
//b = dynamic_cast<B*>(a); // 错误,只支持子类转父类
getchar();
return 0;
}
相关文章
- 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记
- C++ 查找 Temp 目录下指定类型文件的 HEX 特征
- 【C++ Primer每日刷】之三 标准库 string 类型
- qt实现web服务器加载vue应用进行C++和html混合编程-连载【6】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- 【原创】Sublime Text 3快捷配置c++的编译,运行,gdb环境
- 如何编写 C++ 无序容器的哈希函数
- c++中的关键字new是什么东西?
- C++程序设计:原理与实践(进阶篇)17.7 使用Shape类
- c++中值类型数组和引用数组的区别
- C++回调机制的几种实现方式
- C#与 C++数据结构类型对应关系表
- c++读取REG_MULTI_SZ类型注册表
- 开源免费的C/C++网络库(c/c++ sockets library)补充
- 【C/C++知识点汇总】
- 【C++初阶】函数模板与类模板
- C++常见类型所占字节大小
- 《C和C++代码精粹》——1.3 类型系统
- 《C和C++代码精粹》——2.7 指针和一维数组
- 《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.2 Matlab图像类型及其存储方式
- Sublime Text 3配置C++编译运行
- Linux下配置C/C++开发环境-----Eclipse
- 【C++快速上手】番外篇一、Tip of the day in CLion(持续更新...)
- Move semantics(C++11)
- C++实操 - 对数组变量取地址的类型是T(*)[size]而不是T**
- 给C++函数形参传入一个C类型的函数指针