-
static_cast
#include < iostream>
class Base
{
public:
Base(int c = 9,double a=7.99999):_c( c),_a(a){}
public:
int _c;
double _a;
};
class Derived:public Base
{
public:
int _d;
double _e;
float _ff;
char _cc;
};
int main(void)
{
Base base;
Derived *drvPtrA = static_cast<Derived *>(&base);
/1.无编译告警,但是危险操作,譬如说调用drvPtrA->_d会造成不可预知的后果,因为还没初始值/
/派生类指针指向基类对象/std::cout<_a<<std::endl;
std::cout<_c<<std::endl;
std::cout<_d<<std::endl;
std::cout<_e<<std::endl;
std::cout<_ff<<std::endl;
std::cout<_cc<<std::endl;
/*这里Derived drvPtrA可访问派生类及其基类的成员/
system(“pause”);
} -
dynamic_cast
-
const_cast
-
reinterpret_cast
C++的四种强制类型转换static_cast、dynamic_cast、const_cast、reinterpret_cast在类指针中的应用
最新推荐文章于 2025-05-31 21:04:09 发布
本文探讨了C++中static_cast的使用场景与风险,通过实例演示了派生类指针指向基类对象可能引发的未定义行为,强调了类型安全与正确编程实践的重要性。
1141

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



