static_cast一点小知识
来源:互联网 发布:centos ping不通网关 编辑:程序博客网 时间:2024/04/29 17:23
现在C++用的比较多的是类型的转换,其中static_cast使用的比较频繁。有个人碰到个问题问我为什么下面的用法编译时会报错:
错误提示信息为:无法将BYTE类型的tmp转换为AStructType类型。
但是用如下的方式就不会报错:
后来我到网上查了一下资料,发现:static_cast用于两个相关类型之间的转换,不是什么时候都可以用的。主要用于父类和子类之间的转换,或具有相关性的基本类型之间的转换。而BYTE和AStructType不具有这种相关性,所以无法使用static_cast来转换。后一种方式是不安全的类型转换,编译器不会检查转换双方类型的相关性。
另如果是用则编译不会报错。至少void*可以转换成任意类型。
/** dwSize是一个已知的值 */
BYTE* tmp = new BYTE[dwSize];
/** AStructType是一个接口体名称 */
AStructType* pSt = static_cast<AStructType*>(tmp);
BYTE* tmp = new BYTE[dwSize];
/** AStructType是一个接口体名称 */
AStructType* pSt = static_cast<AStructType*>(tmp);
但是用如下的方式就不会报错:
AStructType* pSt = (AStructType*)tmp;
另如果是用
void* tmp = new BYTE[dwSize];
- static_cast一点小知识
- 一点小知识
- Linux一点小知识
- scanf一点小知识
- 一点小知识
- DirectX的一点小知识
- SQL注入一点小知识
- ios的一点小知识
- 线程的一点小知识
- ffmpeg的一点小知识
- 每天一点小知识记录
- 每天一点小知识【4】
- 每天一点小知识【6】
- 每天一点小知识【8】
- 数据库的一点小知识
- UNICODE、DBCS的一点小知识
- Linux中scp的一点小知识
- UNICODE、DBCS的一点小知识
- 贾庆林:吴伯雄来访意义重大
- 判断复选框是否被选中
- 编译程序中出现“fatal error C1010: unexpected end of file”
- pe文件格式
- JSP向MySql插入汉字时,数据库中显示为null
- static_cast一点小知识
- 5.28 new
- 用ADS(AXD Debugger),实现u-boot的源代码级调试(c语言级)
- ASP.NET中常用的三十三种代码
- ILMerge的使用
- ERP系统选择14方略
- js实现页面跳转的几种方式
- DLL动态调用
- [SQL SERVER] 修改加了约束/索引的列