C++笔记4:类型转换

C++笔记4:类型转换,第1张

一:类型转换的两种方式 1:显式类型转换:强转 c风格:(目标类型)原类型变量
int a;
float b = (float)a; 
c+风格:目标类型(原类型变量)
int a;
float b = (float)a;
int c;
float d = float(c);
int e;
float f = (float)(e);
2:隐式类型转换:编译器转
int a;
double b;
float c;
short d;
char e;
①:任何基本类型变量之间都可以隐式转换
a=b=c=d=e;
e=d=c=b=a;
②:任何类型的指针和void*都可以隐式转换
void *p = &a;
p = &b;
p = &c;
p = &d;
p = &e;
③:void*和任何其他类型指针必须强转
int *pa = (int*)(p);
double *pb = (double*)(p);
float *pc = (float*)(p);
short *pd = (short*)(p);
char *pe = (char*)(p);
④:任何类型的非常指针和同类型的常指针都可以隐式转换
const int *cpa = pa;
const double *cpb = pb;
const float *cpc = pc;
const short *cpd = pd;
const char *cpe = pe;
⑤:任何类型的常指针和同类型的非常指针必须强转
pa = (int*)(cpa);
pb = (double*)(cpb);
pc = (float*)(cpc);
pd = (short*)(cpd);
pe = (char*)(cpe);
⑥:除void*外,任何其他类型指针之间必须强转
pa = (int*)(pb);
二:类型转换 ①:静态类型转换
static_cast<目标类型>(源类型变量)
概念:隐式类型转换的逆转换和自定义类型转换
int *pa = static_cast<int*>(p);
double *pb = static_cast<double*>(p);
float *pa = static_cast<float*>(p);
short *pa = static_cast<short*>(p);
char *pa = static_cast<char*>(p);
//特殊性:虽然任何类型的非常指针可以向常指针隐式转换,但唯一特殊不可static_cast逆转换
int *pa = static_cast<int*>(cpa);
double *pb = static_cast<double*>(cpb);
float *pa = static_cast<float*>(cpc);
short *pa = static_cast<short*>(cpd);
char *pa = static_cast<char*>(cpe);
②:常类型转换(去常转换)
const_cast<目标类型>(源类型变量)
概念:去除指针或者引用上的const常属性
int *pa = const_cast<int*>(cpa);
double *pb = const_cast<double*>(cpb);
float *pa = const_cast<float*>(cpc);
short *pa = const_cast<short*>(cpd);
char *pa = const_cast<char*>(cpe);
③:重解释类型转换
reinterpret_cast<目标类型>(源类型变量)
概念:任意类型指针或引用之间转换(除void*);任意类型指针或整形之间的转换。
pa = reinterpret_cast<int*>(pb);
pa = reinterpret_cast<int*>(100);
④:动态类型转换
dynamic_cast<目标类型>(源类型变量)
概念:多态,父子类指针或引用之间的转换。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872709.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存