在C++中, 我们有新的强制转换机制, 为什么要这么搞呢? 因为这些关键字非常显眼, 而且一旦出了问题, 可以方便查阅code.  我们今天暂时不说dynamic_cast, 仅仅感知一下其余的三个:

int main()
{
	// 普通转换, 只能用static_cast
	int i = 0;
	double d = static_cast<int>(i);


	// 转换回来, 其实此处也可以用 reinterpret_cast
	void *p1 = &i;
	int *p2 = static_cast<int *>(&i);


	// 去常转换, 只能用const_cast
	const char *q = "abc";
	char *p3 = const_cast<char *>(q);

	
	// 重解释, 只能用reinterpret_cast
	int n = 0;
	double *pd = reinterpret_cast<double *>(&n);


	return 0;
}
       一定要慎用, 这些转换很容易产生非程序猿预期的结果, 尤其是reinterpret_cast.


本文转载:CSDN博客