关于c++中的类型转换符
2020-12-13 14:13
标签:nbsp 目标 foo 共享 const UNC 服务 常量 ike 用来去掉const或volatile属性 volatile: 一般用来将常量指针变为非常亮指针, 常量引用变为非常量引用, 常量对象变为非常量对象 强制类型转换:(不含类型转换的安全检查) 子类指针转换为父类指针,父类指针可以转换为子类指针(但是不安全) 用于: 仅仅重新解释类型,但没有进行二进制的转换: 用于以二进制形式重新解释类型,但是没有进行二进制的类型转换 有条件转换,动态类型转换,运行时类型安全检查(转换失败返回 基类必须有虚函数。保持多态特性才能使用dynamic_cast 总结 关于c++中的类型转换符 标签:nbsp 目标 foo 共享 const UNC 服务 常量 ike 原文地址:https://www.cnblogs.com/fanhua666/p/11555757.htmlconst_cast(链接)
static_cast(链接)
reinterpret_cast
1. 转换的类型必须是一个指针、引用、算术类型、函数指针或者成员指针。
2. 在比特位级别上进行转换。它可以把一个指针转换成一个整数,也可以把
一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成
原类型的指针,还可以得到原先的指针值)。但不能将非32bit的实例转成指
针。
3. 最普通的用途就是在函数指针类型之间进行转换。
4. 很难保证移植性。
例子:
dynamic_cast
NULL):
1. 安全的父类和子类之间转换。
2. 必须要有虚函数。
3. 相同父类不同子类之间的交叉转换。但结果是NULL。
例子:class BaseClass
{
public:
int m_iNum;
virtual void foo(){};
};
?去const属性用const_cast。
?基本类型转换用static_cast。
?多态类之间的类型转换用dynamic_cast。
?不同类型的指针类型转换用reinterpret_cast
上一篇:Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
下一篇:C# - Recommendations for Abstract Classes vs. Interfaces