1. static_cast<void*>()静态转换 static_cast和 reinterpret_cast的几种使用场景 2. reinterpret_cast<void *>()重新解释转换 A:指针与整数之间的转换: B:指针之间的转换 C:不相关类型的指针之间的转换 D:函数指针之间的转换: 3. const_cast 常量转换 4. dynamic_cast 动态转换 5. 重点-深入理解下reinter...
static_cast可以将任意类型的指针转换为void*,并且将void*指针转换回原始类型的指针。 static_cast可以将子类指针转换为父类指针,但不能将父类指针转换为子类指针。 static_cast不会进行运行时类型检查,因此在进行指针类型转换时需要确保转换是合法的,否则可能导致未定义的行为。 0 赞 0 踩最新问答debian livecd如何...
STL容器:如std::vector、std::string等。 智能指针:如std::unique_ptr、std::shared_ptr等。 B-1:基类与派生类之间的转换 #include<iostream>#include<memory>classBase{public:virtual~Base()=default;virtualvoidshow()const{std::cout<<"Base class"<<std::endl;}};classDerived:publicBase{public:voidsho...
一般情况下,你可以使用static_cast用于数字类型的转换,如把枚举转换为int或是 float类型。 之所以讲static_cast不够安全,就是指在运行阶段不进行类型检查(和dynamic_cast相比,但是dynamic_cast也有一定的局限性,我们以后再讨论)。 具体用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行...
可以用于基本数据类型之间的转换,比如int转换为double,float转换为int等。 父类指针向子类指针的转换 当需要将父类指针转换为子类指针时,可以使用static_cast。 显式调用构造函数的类型转换 还可以用于显式调用构造函数来进行类型转换。 以上是static_cast的应用场景,它主要用于基本数据类型之间的转换,以及在指针类型之间...
1.使用static_cast可以明确告诉编译器,这是损失精度的转换,从而防止编译时发出警告: doublea =1.999;intb =static_cast<double>(a);//相当于a = b ; 加上了static_cast<double>,代表我知道这是会精度损失 2.使用static_cast可以找回存放在void*指针中的值: ...
static_cast 运算符可用于将指向基类的指针转换为指向派生类的指针等操作。 此类转换并非始终安全。通常使用 static_cast 转换数值数据类型,例如将枚举型转换为整型或将整型转换为浮点型,而且你能确定参与转换的数据类型。 static_cast 转换安全性不如 dynamic_cast 转换,因为 static_cast 不执行运行时类型检查,而 ...
1. 将指针【引用】转换成整型。如:float*转成int、CBase*转成int、float&转成int、CBase&转成int等 float f1 = 1.0f; CBase o1; int n1 = reinterpret_cast<int>(&f1); int n2 = reinterpret_cast<int>(&o1); int n3 = reinterpret_cast<int&>(f1); ...