资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C++中四种类型装换

1、类型转换

创新互联建站网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了做网站、网站建设,成都网站设计,一元广告,成都做网站选创新互联建站,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。

  static_cast<>():静态类型转换,编译时C++编译器会做类型检查,在C语言中,隐式类型转换的地方,均可以使用static_cast<>()进行类型转换;

  reinterpret_cast<>():强制类型转换;编译器重新解释;

  dynamic_cast(base):父类对象===>子类对象,向下转型,一般用在继承中;

  const_cast<>():const char *---> char *,把常量属性去掉;

(1)、代码如下:

#include
using namespace std;

class Animal{
    public:
        virtual void cry() = 0;
};

class Dog : public Animal{
    public:
        virtual void cry(){
            cout<<"汪王"<cry();   //1、有继承 2、有虚函数的重写 3、有父类指针指向子类对象; ===>发生多态
    //dynamic_cast能识别子类对象,运行时类型识别;
    Dog *pDog = dynamic_cast(base);  //是自己类型的,将转换成功,否则返回为NULL;
    if(pDog){
        pDog->doHome();   //让狗做自己特有的工作;
    }
    Cat *pCat = dynamic_cast(base);//父类对象===>子类对象,向下转型;
    if(pCat){
        pCat->doThing();   //让猫做自己特有的工作;
    }
}

int main(void){
    Dog d1;
    Cat c1;

    playObj(&d1);
    playObj(&c1);

    //Animal *base = NULL;     
    //base = static_cast(&d1);

    return 0;
}
/*
int main(void){
    double pi = 3.14;

    int num2 = static_cast(pi); //静态类型转换,编译时C++编译器会做类型检查,在C语言中,隐式类型转换
的地方,均可以使用static_cast<>()进行类型转换;

    char *p1 = "abcdef";
    int *p2 = NULL;
    //p2 = static_cast(p1); //使用static_cast,编译器编译时,会做类型检查,若有错误,提示错误;
    p2 = reinterpret_cast(p1);// 强制类型转换;编译器重新解释
    cout<

运行结果:

C++中四种类型装换

(2)、针对const_cast(p)的类型转换代码:

#include
using namespace std;

void printBuf(const char *p){
    //p[1] = '1';
    char *p1 = NULL;
    p1 = const_cast(p);//const char *---> char *,把常量属性去掉;
    p1[0] = 'Z';
    cout<

运行结果:

C++中四种类型装换


当前标题:C++中四种类型装换
文章链接:http://www.cdkjz.cn/article/jhhcpp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220