1. static_cast : 父类转子类:可以转,不报错,不安全; 2.static_casrt : 子类转父类:可以转,不报错,安全; 3.dynamic_cast : 父类转子类 : a)若父类中没有虚函数,不能转,编译报错; b)若父类至少有一个虚函数则可以转,不报错;但: b.1)若父类指针指向的确实是一个子类对象,则dynamic_cast返回该...
使用 static_cast 进行父类指针转子类指针可能会导致程序出现未定义的行为,或者崩溃。这是因为 static_cast 只进行编译时检查,而无法在运行时检查指针的类型是否正确。如果父类指针指向的实际对象类型与要转换的子类类型不匹配,或者父类指针为空指针,那么使用 static_cast 进行转换就会出现问题。而使用 dynamic_cast 可...
一、static_cast的应用场景 基本数据类型之间的转换 可以用于基本数据类型之间的转换,比如int转换为double,float转换为int等。 父类指针向子类指针的转换 当需要将父类指针转换为子类指针时,可以使用static_cast。 显式调用构造函数的类型转换 还可以用于显式调用构造函数来进行类型转换。 以上是static_cast的应用场景,...
int a = 10; void* voidPtr = &a; int* intPtr = static_cast<int*>(voidPtr); 复制代码 转换函数指针:可以将一个函数指针转换为另一个函数指针类型。 void function1() {} void (*funcPtr1)() = &function1; void (*funcPtr2)() = static_cast<void (*)()>(funcPtr1); 复制代码 需要注意...
static_cast 用法 语法: static_cast<type-name>(expression) 仅当type-name 可以隐式转换为 expression 所属的类型,或者 expression 可以隐式转换为 type-name 所属的类型,转换才是合法的。否则,编译器会报错。 可以将有继承关系的派生类对象的地址赋给基类指针。即使基类中没有虚函数也可以使用 static_cast 进...
英伟达C++一面static_cast与dynamic_cast的区别?dynamic_cast的原理 11:31 腾讯C++后端二面:了解写时复制技术吗?fork 的细节是怎么样的? 14:56 B站C++一面:unique_ptr是怎么实现的?unique_ptr 和 shared_ptr 删除器的设计差异? 09:31 金山WPS c++ 一面:std::sort 使用了哪种排序算法? 12:39 小米C+...
```cppint arr[5];int* ptr = static_cast<int*>(arr); // 将数组 arr 转换为指向 int 的指针 ptr```需要注意的是,尽管 `static_cast` 可以进行很多转换,但并非所有的转换都适合使用 `static_cast` 9楼2023-12-25 21:32 回复 鏖战灬嗷 例如,使用 `static_cast` 进行函数指针的转换可能是不安...
对于我们的static_cast转换符,他不仅可以应用到指针和引用上,而且还可以应用到基础数据结构和对象上!如: [cpp]view plain copy 1. double da = 1.1; 2. void *pa = &da; 3. double *dp = static_cast<double*>(pa); 4. 5. int ia = static_cast<int>(da); ...
static_cast和 reinterpret_cast的几种使用场景 2. reinterpret_cast<void *>()重新解释转换 A:指针与整数之间的转换: B:指针之间的转换 C:不相关类型的指针之间的转换 D:函数指针之间的转换: 3. const_cast 常量转换 4. dynamic_cast 动态转换 5. 重点-深入理解下reinterpret_cast的转换原理? 在C++编程中,...
<< std::endl; } }; intmain(){ MyClass::myStaticFunction();//正确,直接调用静态成员函数 static_cast<MyClass*>(nullptr)->myStaticFunction();//错误,不能通过空指针调用静态成员函数 } 注意:static_cast不能用于执行动态转换,例如将父类指针转换为子类指针。对于这种情况,应使用dynamic_cast。