const放在函数前后的区别

本文详细解析了C++中const关键字的使用,包括修饰指针、函数的前后位置区别,以及在类成员函数中的作用。通过具体示例,帮助读者理解const在不同场景下的含义和限制。

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

一、const修饰指针

int b = 500;

1、const int * a = & b;

2、int const * a = & b;

3、int * const a = & b;

4、const int * const a = & b;

 

对于1和2

const 放在*左侧,就是用来修饰指针所指向的变量,即指针指向的是常量。

a是仓库管理员,b是仓库。即仓库中的货物(*a)不允许改变。但是可修改指针指向或b的值来改变*a。

 

对于3

const放在*的右侧,表示管理的仓库不可改变,只能是那一个,但是仓库中的货物(*a)可以改变。同时定义时必须初始化。

 

对于4

表示指针本身和指向的内容均为常量。

二、放在函数前后区别

1、int GetY() const;

2、const int * GetPosition();

 

对于1

该函数为只读函数,不允许修改其中的数据成员的值。

 

对于2

修饰的是返回值,表示返回的是指针所指向值是常量。

三、深入理解const

     const对象只能调用const成员函数;const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误;在const函数中调用非const成员函数是语法错误。

  在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
以下程序中,类stack的成员函数GetCount仅用于计数,从逻辑上讲GetCount应当为const函数。编译器将指出GetCount函数中的错误。
class Stack
{
  public:
void  Push(int elem);
int  Pop(void);
int GetCount(void)  const; // const成员函数
  private:
int m_num;
int m_data[100];
};

int Stack::GetCount(void)  const
{
++ m_num; // 编译错误,企图修改数据成员m_num
Pop(); // 编译错误,企图调用非const函数
return m_num;
}
const成员函数的声明看起来怪怪的:const关键字只能放在函数声明的尾部,大概是因为其它地方都已经被占用了。

--------------------- 本文来自 ranyongqing 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/ranyongqing/article/details/25594795?utm_source=copy

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值