C/C++ 知识回顾(一) const

本文详细解析了C++中const修饰符的使用方法及其在指针、成员函数中的应用,并对比了const与#define的不同之处。

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

1.关于const修饰的变量

int b=500
const int * a=&b;
int const * a=&b;
int * const a=&b;
const int * const a=&b;

const在星号的左边,则const修饰指针所指向的变量,即指针指向常量

const在星号的右边,则const修饰指针,即指针是常量

所以,在情况一、二下

*a=600 错误

int c=600;

a=&c 正确

这种情况,可以先不进行初始化 

const int *a;正确


对于情况三

int * const a;//错误,因为没有初始化
int  *const a=&b;//正确
*a=600; //正确
a=&c//错误


对于情况四

指针和指针所指向的内容均为常量


2.关于const修饰的成员函数

const在函数后修饰:函数不能改变变量的值或者引用一个非const成员函数

const在函数前修饰:返回常量

mutable修饰成员变量名后,就可以在const函数里修改成员变量了

class Point
{
int x,y;
public:
int GetY() const;
}
//关键字必须用同样的方式重复出现在函数实现里,否则编译器会把它看成一个不同的函数
int Point::GetY() const
{
return y;
}

3.const 与#defined相比有什么不同

(1)const有数据类型 而defined没有

(2)const会进行类型安全检查,defined只进行简单的字符替换,容易出现错误

(3)某些调试工具可以对const常量进行调试,但是不能对宏常量进行调试


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值