C++ 中const关键字小记

来源:互联网 发布:checkpoint软件下载 编辑:程序博客网 时间:2024/05/28 11:47

c++中const用在变量之前,说明该变量为只读,不能赋值。

c++中const用在函数里,分为以下3种情况:

               int  strcmp (const   char  *str1,const    char  *str2);

              const    int  & min (int  &, int  &);

              void  printMessage (char  *msg) const ;

第一种: 出现在参数里面修饰参数

       出现在函数参数中的const 表示在函数体中不能对这个参数做修改。比如上面的例子中strcmp() 函数用来比较两个字符串的大小,在函数体中不应该改变两个参数的值,所以将它定义为是const 的。const 通常用来限制函数的指针参数,引用和数组参数,而一般形式的参数因为形参和实参本来就不在同一内存空间,所以对形参的修改不会影响实参,因此也没有必要限制函数体不能对参数进行修改。

       const 指针可以接受const 和非 const 地址,但是非const 指针只能接受非const 地址。所以const  指针的能力更强一些,所以尽量多用const 指针,这是一种习惯。

第二种:出现在返回值修饰

        函数返回值为 const  只有用在函数返回为引用的情况。 函数返回值引用常量表示不能将函数调用表达式作为左值使用。例如前面讲的返回引用的函数 min( )。

        int  & min ( int  &i,  int  &j); 

可以对函数调用进行赋值,因为它返回的是左值:  min ( a ,  b )=4;

但是,如果对函数的返回值限定为 const  的:const  int  & min ( int & i, int  &j );

那么,就不能对 min ( a, b ) 调用进行赋值了。

第三种:出现在函数()后面

         在类中,可以为类的成员函数进行如下形式的定义:

class  classname {

          int  member ;

  public:

         int  getMember ( ) const ; 

};

       这里,在函数定义头后面加上的 const 表示这个函数是一个“只读函数”,函数不能改变类对象的状态,不能改变对象的成员变量的值。如在函数体中不能这么写 :

    classname :: getmember( )

   {  member =4 ; 

     return  member;

   }

 另外,const成员函数也不能在函数中调用其他非const 的函数。______________________________________________________________________________


对象.成员函数

         对象          成员函数       对/错
1、  const            const              对
2、  const           non-const       错 
3、  non-const     const             对
4、  not-const     non-const       对



          成员函数调用成员函数

     成员函数      成员函数       对/错
5、  const            const             对
6、  const         non-const        错
7、  non-const     const            对
8、  non-const     non-const     对

0 0
原创粉丝点击