C++中的新式类型转换-创新互联

文章目录
  • 前言
  • 一、static_cast
  • 二、const_cast
  • 三、reinterpret_cast
  • 四、dynamic_cast
  • 总结

为蓬安等地区用户提供了全套网页设计制作服务,及蓬安网站建设行业解决方案。主营业务为成都网站制作、成都网站设计、蓬安网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
前言

本篇文章给大家介绍C++中的几种新式类型转换。

一、static_cast

static_cast用法:
1.用于基本类型间的转换

int a = 67;

    char b = static_cast(a);//true

    cout<< a<< endl;
    cout<< b<< endl;

2.不能用于基本类型指针间的转换

int a = 67;

    char b = static_cast(a);//true

    cout<< a<< endl;
    cout<< b<< endl;

    int* p = &a;
    char* p1 = static_cast(p);//err

3.用于有继承关系对象之间的转换和类指针之间的转换

#include#includeusing namespace std;

class Test
{public:
    Test()
    {cout<< "Test()"<< endl;
    }
    ~Test()
    {cout<< "~Test()"<< endl;
    }
    void print()
    {cout<< "this is Test()"<< endl;
    }
};

class Test1 :public Test
{public:
    Test1()
    {cout<< "Test1()"<< endl;
    }
    ~Test1()
    {cout<< "~Test1()"<< endl;
    }
    void printf_string()
    {cout<< "string"<< endl;
    }
};


int main()
{Test1 t1;

    Test t2 = static_cast(t1);

    return 0;
}
二、const_cast

const_cast可以清除变量的只读熟悉。
注意:强制转换的目标类型必须是指针或者引用。
此时a不能赋值为其他的数值,因为a是一个只读变量

const int& a = 10;

    a = 20;//err

使用const_cast清除a的只读属性

const_cast(a) = 20;//true
三、reinterpret_cast

用于指针类型间的强制类型转换

char a = 10;
char* p = &a;
int* p1 = reinterpret_cast(p);

用于整数和指针的强制类型转换

int a = 0x220000;

int* p = reinterpret_cast(a);
四、dynamic_cast

用于有继承关系的类指针间的转换
需要有虚函数的支持

class Test
{public:
    Test()
    {cout<< "Test()"<< endl;
    }

    virtual void print()
    {cout<< "hello"<< endl;
    }

    ~Test()
    {cout<< "~Test()"<< endl;
    }
};

class Test1 : public Test
{public:
    Test1()
    {cout<< "Test1()"<< endl;
    }

    void print()
    {cout<< "hello world"<< endl;
    }
    
    ~Test1()
    {cout<< "~Test1()"<< endl;
    }
};

Test1 t2;
Test1 *t = &t2;
Test *t1 = dynamic_cast(t);
总结

这四个强制类型转换是经常使用的,希望大家掌握。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:C++中的新式类型转换-创新互联
文章来源:http://pwwzsj.com/article/pgdos.html