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;
		//这个才是对的
	}
};
相关推荐
八解毒剂5 分钟前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
sensen_kiss7 分钟前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.9 软件测试 (Software Testing)(下)
学习·软件工程
会Tk矩阵群控的小木10 分钟前
基于Python的iMessage短信群发与社媒多账号统一管理系统实现
开发语言·windows·python·新媒体运营·开源软件·个人开发
我是一颗柠檬13 分钟前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构
wu_ye_m15 分钟前
学习c语言第35天 函数声明和定义
c语言·开发语言·学习
njsgcs22 分钟前
c# solidworks 创建装配体工程图+bom
开发语言·c#·solidworks
清辞85329 分钟前
Coze从入门到实战---第一、二章
大数据·人工智能·学习·语言模型
起床困难户57535 分钟前
条款20:协助完成返回值优化
c++
啦啦啦啦啦zzzz41 分钟前
算法总结(二分查找、双指针)
c++·算法
小林敲代码778841 分钟前
记录一下IDEA中很多变量变色的方案
java·开发语言·spring boot·idea