关于类型转换
-
C风格
形式; Type b=(Type)a; -
C++
(C++提供类型检查,较安全)
static_cast | 一般转换 |
---|---|
dynamic_cast | 通常在基类和派生类之间转换时使用 |
const_cast | 主要针对const的转换 |
reinterpret_cast | 用于进行没有任何关联之间的转换 |
//基础数据类型之间的转化
int a=1;
char c=static_cast<char>(a);
//对应ASCII码
class pointer{
//nothing
};
class people{
//nothing
};
class ncu:public people{
//nothing
};
//子类->父类
ncu n;
people p=static_cast<people*> (n);
//父类->子类
people pe;
nuc nc=static_cast<ncu*> (pe);
//引用
ncu nobj;
ncu nref=&nobj;
people &p=static_cast<people&> (nref);
people peobj;
people& peref;
nuc &nc=static_cast<ncu&> (peref);
1 .一般来说子类大于父类
常识观念来说 小->大不安全(可能涵盖到未包含区域) 大->小 安全
2. dynamic_cast
只能转换具有继承关系的指针或者引用,并且只能由子类型转换为父类型(基类型)