C++提供了四种新的类型转换

来源:互联网 发布:彩票走势分析软件 编辑:程序博客网 时间:2024/06/05 07:02

C++提供了四种新的类型转换:

static_cast
const_cast
reinterpret_cast
dynamic_cast


1)staic_cast静态强制;

不能在无关的指针之间进行static类型强制

class CAnimal{    //...    public:    CAnimal(){}};class CGiraffe:public CAnimal{    //...    public:    CGiraffe(){}};int main(void){    CAnimal an;    CGiraffe jean;    an = static_cast<CAnimal>(jean);//将对象jean强制成CAnimal类型    return 0;} 


2、const_cast类型强制

const_cast类型强制将一个const变量变成一个非const的等价形式
int main(){    const int j = 99;    int * k;    k = const_cast<int *>(&j);//解除const    return 0;} 


3、reinterpret_cast运算符

reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上;
int main(){    int j = 10;    int * ptr = &j;    char * cptr;    cptr = reinterpret_cast<char *>(ptr);//将int指针类型转变为char的指针类型    return 0;} 


4、dynamic_cast运算符

dynamic_cast的主要目的是:

1)它返回派生类对象的地址;
2)它测试基类指针是否指向下一尖括号<>中所指定类型的对象

dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针; 

class CAnimal{    //...};class CGiraffe:public CAnimal{    //...};class CGoat:public CAnimal{    //...};int main(){    CGiraffe gene;    CAnimal * aptr = &gene;    CGiraffe * ptr1,* ptr2;    ptr1 = dynamic_cast<CGiraffe *>(aptr);    ptr2 = dynamic_cast<CGoat *>(aptr); //return NULL    return 0;} 



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开车上班总有蹭车的怎么办 食堂的饭难吃怎么办 租亲戚的房子怎么办 饭菜罩子生虫怎么办 食堂吃出虫子怎么办 缺氧没有煤炭了怎么办 缺氧没有金属了怎么办 白色衣服带红色怎么办 如果买方退回假货怎么办 饰品氧化变黑了怎么办 银放久了变黄怎么办 真银变色了怎么办 古装头饰变色了怎么办 液晶电视遥控器坏了怎么办 纯银手镯发黑怎么办 银色项链黑了怎么办 线切割割铜割不动怎么办 楼房一直不动工怎么办 买火车票待审核怎么办 太原动车月票怎么办 发票上没有日期怎么办 火车没有坐票怎么办 如果买到无座的火车票怎么办 动车票来不及去怎么办 火车票被洗了怎么办 进站后走错站台怎么办 高铁票迟到了怎么办 12306生日错了怎么办 账号未通过核验怎么办 高铁票购票失败怎么办 天际线没有人口需求怎么办 复兴号 锁 区间 怎么办 地板砖上铺木地板门怎么办 高考座位号没涂该怎么办 一个人带小孩很累很烦怎么办 收割机麦立怎么办漏 买到火车无座票怎么办 学高铁乘务员身高不够怎么办 动车买了无座票怎么办 坐火车无座怎么办 长途火车无座怎么办