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;
		//这个才是对的
	}
};
相关推荐
qzhqbb9 分钟前
神经网络—— 学习与感知器(细节补充)
神经网络·学习
xunyan623413 分钟前
面向对象(上)-封装性的引入
java·开发语言
Maple_land41 分钟前
Linux复习:冯·诺依曼体系下的计算机本质:存储分级与IO效率的底层逻辑
linux·运维·服务器·c++·centos
ue星空44 分钟前
UE核心架构概念
网络·c++·ue5
还算善良_44 分钟前
XML签名
xml·java·开发语言
梅梅绵绵冰1 小时前
xml方式实现AOP
xml·java·开发语言
风暴之零1 小时前
卡尔曼滤波学习
人工智能·学习·机器学习
235162 小时前
【JVM】Java为啥能跨平台?JDK/JRE/JVM的关系?
java·开发语言·jvm·spring boot·后端·spring·职场和发展
2401_860319522 小时前
【无标题】
开发语言·学习·rust
ShineWinsu3 小时前
对于数据结构:堆的超详细保姆级解析——下(堆排序以及TOP-K问题)
c语言·数据结构·c++·算法·面试·二叉树·