【学习总结】const关键字

本文详细探讨了C++中的const关键字,包括const如何帮助实现编译时的语义约束,const与volatile的结合使用,const修饰全局变量、局部变量、指针、函数参数和返回值,以及const在成员函数中的应用。通过实例解析了const的底层工作原理和最佳实践。
摘要由CSDN通过智能技术生成

Const关键字作用

在c语言中,const修饰的是只读变量,并不是一个常量,本质还是一个变量。
const修饰的变量会占用内存空间,本质上const只对编译器有用,它告诉编译器,这个变量是只读的。

Effective C++ 条款02/条款03:
const允许你指定一个语义约束,而编译器会强制实施这项约束。

1. const修饰全局变量/局部变量
2. const修饰指针
3. const修饰函数参数
4. const修饰函数返回值
5. const修饰成员函数
编译器如何处理Const

参考:编译器在处理const变量跟一般变量时的区别

读一般的变量的时候,首先获取该变量的地址,然后到该地址去取数据。const变量是如何被读取?

#include <iostream>
using namespace std;

const int b = 2;

int main() {
   
	const int a = 1;
	const int * pa = &a;						 //指针pa指向常量a所在的内存
	int * p_var = const_cast<int *>(pa);		 //强制转换const指针为非const
	*p_var = 11;
	int *pc = (int *)(&a);
	*pc = 13;
	int *pb = (int *)(&b);
	//*pb = 12; error
	cout << "a= " << a << endl;
	cout << "Address a = " << (&a) << endl;
	cout << "pa = " << *pa << endl;
	cout << "Address pa = " << (pa) << endl;
	cout << "pb = " << *pb << endl;
	cout << "Address pb = " << (pb) << endl;
	cout << "pc = " << *pc << endl;
	cout << "Address pc = " << (pc) << endl;
	cout << "p_var = " << *p_var << endl;
	cout << "Address p_var = " << (p_var) << endl;
	return 0;
}

运行结果:

a= 1
Address a 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值