c++ 学习之 强制类型转换运算符 const_cast

看例子怎么用

复制代码
int main()
{
	int a = 1;
	int* p = a;
	// 会发生报错
	// 如果学着 c的风格类型转换
	int* pp = (int*)a;
	*pp = 1;  // 编译不报错,但是运行报错


	// const_cast
	const int n = 5;
	const std::string s = "lalal";

	// const cast 只针对指针,引用,this指针,下面的就是错的

	int k = const_cast<int>(n);
	// 下面的才是对的
	int *j = const_cast<int*>(&n);
	int o = const_cast<int&>(n);
}

再看看const_cast在this指针中的用法

复制代码
class Test {
public:
	int a;
	Test(int a) :a(a) {

	}
	void fun(int p) const {
		a = p; // 这句话是错误的
		// 要修改为
		const_cast<Test*>(this)->a = p;
		//这个才是对的
	}
};
相关推荐
楼田莉子1 天前
CMake学习:CMake在二进制工程场景上应用
linux·c++·vscode·学习·软件构建
知识分享小能手1 天前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 新增功能 — 语法知识点及使用方法详解(20)
数据库·学习·sqlserver
专注VB编程开发20年1 天前
C#,VB.NET如何用GPU进行大量计算,提高效率?
开发语言·c#·.net
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧1 天前
Jsoup: 一款Java的HTML解析器
java·开发语言·前端·后端·缓存·html
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧1 天前
JSP, MVC, El, JSTL, MAC
java·开发语言·mvc·mac·jsp
黎雁·泠崖1 天前
Java 数据结构与算法:时间空间复杂度 从入门到实战全解
java·开发语言
俩娃妈教编程1 天前
2025 年 06 月 三级真题(1)--分糖果
c++·算法·gesp真题
tankeven1 天前
HJ97 记负均正
c++·算法
kyle~1 天前
Python---webbrowser库 跨平台打开浏览器的控制接口
开发语言·python·web
俩娃妈教编程1 天前
2025 年 06 月 三级真题(2)--奇偶校验
c++·算法·gesp真题