C语言中如何进行不同数据类型的强制类型转换操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1928个文字,预计阅读时间需要8分钟。
引言:假设存在基类A,包含虚函数func1,以及派生类B,继承自类A,并在类B中实现了函数func1。此时,可以用A类型的指针指向B类型的对象,并用A类型的指针调用B类型对象中的func1函数。
引言
假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1。此时可以用 A 类型的指针指向 B 类型的对象,并用 A 类型的指针调用 B 类型对象中的函数 func1。这时,就形成了多态。包含虚函数的类 A,我们也称为多态类。
由于派生类 B 完整包含了 基类 A 的所有定义,将 B 类型的指针转换为 A 类型的指针总是安全的。
而将 A 类型的指针强制转换为 B 类型的指针时,如果 A 类型指针指向的对象确实为 B 类型的对象,那么转换也是安全的。此时,该 B 类型对象被称为完整对象(complete object)。
强制转换有哪些类型?
C++ 包含了以下几种强制转换运算符,这些运算符用于消除老式 C 语言转换中的存在的歧义和隐患:
- dynamic_cast
- static_cast
- const_cast
- reinterpret_cast
- safe_cast
本文会着重介绍如何使用 dynamic_cast 和 static_cast。
提醒:
除非必须,不要使用 const_cast 和 reinterpret_cast,因为它们存在一些老式 C 语言转换中的隐患。
本文共计1928个文字,预计阅读时间需要8分钟。
引言:假设存在基类A,包含虚函数func1,以及派生类B,继承自类A,并在类B中实现了函数func1。此时,可以用A类型的指针指向B类型的对象,并用A类型的指针调用B类型对象中的func1函数。
引言
假设有基类 A,包含了虚函数 func1,以及有派生类 B,继承于类 A,派生类 B 中实现了函数 func1。此时可以用 A 类型的指针指向 B 类型的对象,并用 A 类型的指针调用 B 类型对象中的函数 func1。这时,就形成了多态。包含虚函数的类 A,我们也称为多态类。
由于派生类 B 完整包含了 基类 A 的所有定义,将 B 类型的指针转换为 A 类型的指针总是安全的。
而将 A 类型的指针强制转换为 B 类型的指针时,如果 A 类型指针指向的对象确实为 B 类型的对象,那么转换也是安全的。此时,该 B 类型对象被称为完整对象(complete object)。
强制转换有哪些类型?
C++ 包含了以下几种强制转换运算符,这些运算符用于消除老式 C 语言转换中的存在的歧义和隐患:
- dynamic_cast
- static_cast
- const_cast
- reinterpret_cast
- safe_cast
本文会着重介绍如何使用 dynamic_cast 和 static_cast。
提醒:
除非必须,不要使用 const_cast 和 reinterpret_cast,因为它们存在一些老式 C 语言转换中的隐患。

