c++ const

本文详细解析了C++中const关键字的多种用途,包括修饰普通类型变量、指针变量及函数参数等,并探讨了其在不同上下文中的含义与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#const 修饰普通类型的变量

const int a 7;
int b = a;	//it's right
a = 8;		//it's illegal

a被定义为一个常量,可以将a赋值给b,但是不能给a再次赋值。对一个常量赋值是违法的事情,因为a被编译器认为是一个常量,其值不允许被修改。
#const 修饰指针变量
##修饰指针指向的内容

const int *p = 8;//const 位于 * 的左边

指针指向的变量不可变
##修饰指针

int a= 8;
int * const p = &a;
*p = 9;//it's right
int b=7;
p = &b;//it's illegal

指针变量(p)本身不可变,即指针指向的内存地址(&a)不可变,亦指针无法改变所指向的变量
但是,指针指向的变量(a)可变,即*p可变。
##修饰指针和指针指向的内容

int a = 8;
const int * const p = &a;

指针(p)指向的内存地址不可变,同时,指针(p)指向的变量(a)不可变。

总结:左定值,右定向,const修饰不变量。

#const 修饰函数参数
##const参数为普通类型

void function(const int a)
{
	//++a;//it's illegal
}

注:一般值传递不需要const修饰,因为函数会自动产生临时变量复制实参值。除非,需要强制限制实参值不可变。
##const参数为指针类型

void function(int * const a)
{
	*a =9;
}

当const参数为指针时,可以防止指针被意外篡改。
##const参数为引用类型

void function(const  SelfDefinedClass &  tmp)
{
	//.....
}

引用传递的使用场景:参数类型为自定义类型,并且临时变量的构造代价较大(时间或空间),我们可以通过引用传递减少临时变量的构造成本。

#const修饰函数返回值
#const修饰类成员函数

  • const修饰的成员函数不能修改任何的成员变量
  • const成员函数不能调用非onst成员函数,因为非const成员函数可以会修改成员变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值