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;
		//这个才是对的
	}
};
相关推荐
松涛和鸣4 分钟前
DAY20 Optimizing VS Code for C/C++ Development on Ubuntu
linux·c语言·开发语言·c++·嵌入式硬件·ubuntu
田里的水稻8 分钟前
Python_编程中代码注释相关格式 PEP8 — Python 官方代码风格指南
开发语言·python
一只乔哇噻9 分钟前
java后端工程师+AI大模型进修ing(研一版‖day57)
java·开发语言·人工智能·算法·语言模型
Williams1017 分钟前
Java POI/Excel工具:终结OOM、精度丢失和i18n三大难题
java·开发语言·excel
自然语29 分钟前
人工智能之数字生命-学习的过程
数据结构·人工智能·深度学习·学习·算法
李绍熹32 分钟前
Lua 错误处理详解
开发语言·junit·lua
I***261532 分钟前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
灯厂码农33 分钟前
C++文件操作
开发语言·c++
你好~每一天37 分钟前
从传统行业到AI入门:我的CAIE Level I学习体验与思考
大数据·数据结构·人工智能·学习·jupyter·idea
️停云️1 小时前
C++异常与智能指针
开发语言·c++