const用法

本文详细解析了C++中const关键字的基本用法及其在指针、函数参数、返回值及成员函数中的应用,并给出了实用建议。

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


一   const基础  
   
  如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:  
   
  int   b   =   500;  
  const   int*   a   =   &b;              [1]  
  int   const   *a   =   &b;              [2]  
  int*   const   a   =   &b;              [3]  
  const   int*   const   a   =   & b;   [4]  
   
  如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《effective   c++》item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的 右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量,这种情况下不允许对内容进行更改操 作,如不能*a   =   3   ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常 量。  
  另外const   的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const   可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法:a&   operator=(const   a&   a);  
  void   fun0(const   a*   a   );  
  void   fun1(   )   const;   //   fun1(   )   为类成员函数  
  const   a   fun2(   );        
     
三   作为参数和返回值的const修饰符  
   
  其实,不论是参数还是返回值,道理都是一样的,参数传入时候和函数返回的时候,初始化const变量  
  1   修饰参数的const,如   void   fun0(const   a*   a   );   void   fun1(const   a&   a);  
  调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,如形参为const   a*   a,则不能对传递进来的指针的内容进行改变,保护了原指针所指向的内容;如形参为const   a&   a,则不能对传递进来的引用对象进行改变,保护了原对象的属性。  
  [注意]:参数const通常用于参数为指针或引用的情况;   
     
四   类成员函数中const的使用
   一般放在函数体后,形如:void   fun()   const;
如果一个成员函数的不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器将报错,这大 大提高了程序的健壮性。  
  五   使用const的一些建议  
   
  1   要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;  
  2   要避免最一般的赋值操作错误,如将const变量赋值,具体可见思考题;  
  3   在参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上;  
  4   const在成员函数中的三种用法要很好的使用;  
  5   不要轻易的将函数的返回值类型定为const;  
  6   除了重载操作符外一般不要将返回值类型定为对某个对象的const引用;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值