目录
1.static_cast
概念
static_cast 是C++中的一种类型转换运算符,用于执行编译时的类型转换。它通常用于在编译时进行类型转换,而不进行运行时的检查。
static_cast 可以用于以下几种常见的类型转换:
1.基本数据类型的转换:
static_cast 可以用于执行基本数据类型之间的转换,例如将整数转换为浮点数,反之亦然。
int integer = 42;
double floating = static_cast<double>(integer);
2.指针类型的转换
static_cast 可以用于执行指针类型之间的转换,但它通常不进行运行时检查。因此,你需要确保转换是安全的
Parent* parentPtr = new Child;
Child* childPtr = static_cast<Child*>(parentPtr);
如果你尝试将一个指向一个类的基类的指针转换为指向一个派生类的指针,但实际上该对象并不是派生类的实例,那么这个转换是不安全的。
class Base {};
class Derived {};
Base* basePtr = new Base;
Derived* derivedPtr = static_cast<Derived*>(basePtr); // 不安全
在这种情况下,由于对象实际上不是 Derived 类的实例,这个转换会导致未定义的行为。
3.类层次结构中的向上转换
当你有一个指向派生类对象的指针,但需要将其转换为基类指针时,可以使用 static_cast 进行向上转换。
Child* childPtr = new Child;
Parent* parentPtr = static_cast<Parent*>(childPtr);
2.dynamic_cast
dynamic_cast 是C++中的一种类型转换运算符,主要用于在

本文介绍了C++中的四种类型转换运算符:static_cast、dynamic_cast、const_cast和reinterpret_cast,分别阐述了它们的概念、用途、区别和安全特性,重点强调了dynamic_cast在多态场景中的运行时类型检查。
最低0.47元/天 解锁文章
145

被折叠的 条评论
为什么被折叠?



