小工具知识网

当前位置: 首页 > 行业知识 > C++的类型转换

行业知识

C++的类型转换

2026-10-25 20:36:34 来源:互联网转载

目录

一.   C语言中的类型转换

1.1   隐式类型转换

1.2   强制类型转换

1.3   缺点

二.    C++中的类型转换

2.1   内置类型转换为自定义类型

2.2   自定义类型转换为内置类型

2.3   自定义类型转换为自定义类型

三.   C++强制类型转换

3.1   static_cast

3.2   reinterpret_cast

3.3   const_cast

3.4   dynamic_cast

四.   谨慎使用强制转换


前言:  

今天我们来讲解C和C++的类型转换,内容炒鸡干,准备好水,一起来看看吧!

一.   C语言中的类型转换

在C语言中,如果等号两边的类型不一样,或者形参和实参的类型不匹配,或者函数返回值与接收的变量类型不同,就会发生类型转换。C语言中存在两种类型转换:隐式类型转换和显示类型转换。

  • 隐式类型转换:编译器自动进行的,能转换就转,转换不了就会报错。
  • 显示类型转换:用户自己定义的。

    1.1   隐式类型转换

    隐式类型转换包括整型与整型之间,整型与浮点型之间,bool与整型之间,bool与指针之间的转换等等。 

    int i = 1;//隐式类型转换//整型与整型之间char c = i;//整型与浮点型之间double d = i;//bool与整型之间bool b = i;// bool与指针之间int* p = &i;if (p){printf("1");}

    特别注意的是:有关联的类型才能相互转换。

    如下:

    int i = 1;int* p=&i;//无法转换,他们之间没有关联double dd = (double)p;

    是会报错的,因为double类型的变量与int*类型的指针之间并没有关联,所以类型转换会失效。

    1.2   强制类型转换

    一般发生在不同类型的指针转换或者指针与整型转换之间:

    int i = 1;int* p = &i;//显示的强制类型转换//整型与指针之间int address = (int)p;//不同类型指针之间double* pp=(double*)p;

    1.3   缺点

    • 转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。
    • 隐式类型转化有些情况下可能会出问题:比如数据精度丢失
    • 显式类型转换将所有情况混合在一起,代码不够清晰

       比如下面这段代码:

      //隐式类型转换void Insert(size_t pos, int x){//size_t end = _size;int end = 10;//比较的时候end会隐式类型转换成size_t,再比较while (end >= pos){cout 

上一篇:48个音标后缀怎么读?

下一篇:电脑怎么设置主机最低配置