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;
		//这个才是对的
	}
};
相关推荐
忘了ʷºᵇₐ6 小时前
Git学习笔记
笔记·git·学习
纪念 2296 小时前
C++ 算法(模拟)
开发语言·c++·算法
zwc32104320556 小时前
Day 2:图像内存、数据类型与stride
c++·人工智能·opencv·算法·计算机视觉
niucloud-admin6 小时前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:评价列表
开发语言·php
fanged6 小时前
Audio学习8(Pi5+FPGA)(TODO)
学习
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 项目:需求分析与滑动数据设计
java·开发语言·交友
金色光环7 小时前
【DSP学习】C2000_PWM中断程序_笔记
笔记·单片机·学习
gz927cool7 小时前
Python 全栈应用最佳实践完整指南
开发语言·python·ai
道尔柯南7 小时前
C++ 内存管理详解:从 malloc/free 到 new/delete
c++·面试
東隅已逝,桑榆非晚7 小时前
AVL数实现
c++·笔记·学习·算法