C++ 强制类型转换
在C 中,有四种强制类型转换:
1、static_cast:这是最常见的类型转换。它可以用于基本数据类型之间的转换,也可以用于指向父类和子类之间的指针或引用的转换。
static_cast可以实现下列转换:
①基本数据类型之间的转换。
②将任何类型转换为void类型。
③把空指针转换成目标类型的指针。
④用于类层次结构中基类和派生类之间指针或引用的转换。
⑤向上转换(派生类转换为基类)是安全的;向下转换(基类转换为派生类)没有动态类型检查,是不安全的。
例如:
-
int i = 10;
-
double d = static_cast<double>(i); // 整型转为浮点型
2、dynamic_cast:主要用于处理基类和派生类之间的转换。如果类型转换不安全,它会返回空指针NULL。这是唯一个一个地种在运行时执行类型检查的转换。
例如:
-
Base *b = new Derived();
-
Derived *d = dynamic_cast<Derived*>(b); // 基类指针转为派生类指针
-
if (d != nullptr) {
-
// 转换成功
-
} else {
-
// 转换失败
-
}
3、const_cast:这种类型转换用于修改常量对象的常量属性。需要注意的是,使用 const_cast 去掉常量性质并修改数据可能导致未定义的行为。
例如:
-
int num = 100;
-
const int* p1 = #
-
//将常量指针转换为普通类型指针,去除const属性
-
int* p2 = const_cast<int*>(p1);
-
*p2 = 200;
-
int a = 100;
-
const int& ra = a;
-
//将常量引用转换为普通类型引用,去除const属性
-
int& ra1 = const_cast<int&>(ra);
-
ra1 = 200;
注意:
const_cast<>只能用于转换指针或引用。
4、reinterpret_cast:这种类型转换允许进行任何指针或整型的转换。它可以将任何类型的指针转换为任何其他类型的指针,也可以将任何类型的指针转换
例如:
-
char c = 'a';
-
int d = reinterpret_cast<int&>(c);
-
int* p=NULL;
-
float* q = NULL;
-
p = reinterpret_cast<int*>(q);
-
q = reinterpret_cast<float*>(q);
注意:
reinterpret_cast要转换的类型必须是指针类型、引用或算术类型。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiafjai
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22