C++的类型转换——《static_cast》《reinterpret_cast 》 《const_cast》《dynamic_cast》

《一》C语言的类型转换

隐式类型的转换,
显示类型的转换,

#include
#include
using namespace std;

int main()
{
	int i = 1;
	//隐式类型转换,相关类型,
	double d = i;
	printf("%d,%.2f\n", i, d);
	int* p = &i;

	//显示类型的强制转换,不想管类型
	int assress = (int)p;
	cout << assress << endl;
}

2 c++强制类型转换
标准c++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符。
static——cast,reinterpret_cast , const_cast,dynamic_cast;

首先,我们看下面的一段代码:

int main()
{
	const int a = 3;
	int*p = const_cast(&a);

	*p = 4;
	cout << a << endl;
	return 0;
}

我们先看一下程序,结果是什么?
C++的类型转换——《static_cast》《reinterpret_cast 》 《const_cast》《dynamic_cast》_第1张图片
我相信,有很多的同学,都认为是4,但是结果却是3,那该怎么解决这个问题吗?我们继续往下面看。
*int main()
{
volatile const int a = 3;
intp = const_cast>(&a);
p = 4;
cout << a << endl;
return 0;
}

加入“ volatile ”关键字——挥发物。
这个也是比较爱考的,所以下来,没事的同学,可以在百度上面在深入了解一下。

你可能感兴趣的:(c++的进程)