C++ 补充 & C++ 11 - C++ const_cast用法详解

const_cast用法详解

去const属性。(仅针对于指针和引用)

demo 代码(一)

#include <iostream>

using namespace std;

void demo(const char* p)
{
	/* 对指针去掉 const char *p */
	char* p1 = const_cast<char*>(p);
	p1[0] = 'A';

	/* 直接去掉 const 修改 */
	const_cast<char*>(p)[0] = 'A';
	p1[0] = 'A';

	cout << p << endl;
}

void demo(const int p)
{
	int q = p;
	//const_cast<int>(p) = 888; /* NO! 不能对非指针和引用进行 const 转换 */
	cout << p << endl;
}

int main(void)
{
	/* 字符串数组 */
	char p[] = "12345678";
	demo(p); /* 合情合理 */

	/* 常量字符串不能去掉 const 修改 */
	/* 警告: 在去掉常量限定之前, 保证指针指向的内存能够修改, 不能修改则会引起异常 */
	const char* cp = "987654321";
	demo(cp);

	system("pause");
	return 0;
}

结语:

时间: 2020-07-02

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章