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;
		//这个才是对的
	}
};
相关推荐
无望__wsk9 分钟前
Python第一次作业
开发语言·python·算法
Word码16 分钟前
[C++语法]-vector(用法详解及实现)
开发语言·c++
安全二次方security²18 分钟前
CUDA C++编程指南(7.15&16)——C++语言扩展之内存空间谓词和转化函数
c++·人工智能·nvidia·cuda·内存空间谓词函数·内存空间转化函数·address space
代码雕刻家23 分钟前
4.3.多线程&JUC-多线程的实现方式
java·开发语言
L1869245478224 分钟前
Win 下 PCL部分函数析构崩溃问题总结
c++·计算机视觉·3d·pcl
梦65024 分钟前
网络传输七层协议
开发语言·网络·php
南 阳32 分钟前
Python从入门到精通day16
开发语言·python·算法
沉默-_-36 分钟前
力扣hot100-子串(C++)
c++·学习·算法·leetcode·子串
李少兄40 分钟前
Java 后端开发中 Service 层依赖注入的最佳实践:Mapper 还是其他 Service?
java·开发语言
不会c+1 小时前
@Controller和@RequestMapping以及映射
java·开发语言