行业知识
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个音标后缀怎么读?
下一篇:电脑怎么设置主机最低配置