四种类型转换符详解

一:背景

在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码:


int main()
{
	void* ptr = malloc(sizeof(int) * 10);

	int* int_ptr = (int*)ptr;
	char* char_ptr = (char*)ptr;
}

由于 C 的自由度比较大,想怎么玩就怎么玩,带来的弊端就是容易隐藏着一些不易发现的bug,归根到底还是程序员的功底不扎实,C++ 设计者觉得不能把程序员想的太厉害,应该要力所能及的帮助程序员避掉一些不必要的潜在 bug,并且还要尽最大努力的避免对性能有过多的伤害,所以就出现了 4 个强制类型转换运算符。

  1. const_cast
  2. reinterpret_cast
  3. dynamic_cast
  4. static_cast

既然 C++ 做了归类,必然就有其各自用途,接下来我们逐一和大家聊一下。

二:理解四大运算符

1. const_cast

这是四个运算符中最好理解的,玩过 C++ 的都知道,默认情况下是不能修改一个 const 变量,比如下面这样:


int main()
{
	const int i = 10;
	i = 12;
}

这段代码肯定是要报错的,那如果

你可能感兴趣的:(最高笔记,笔记,学习)