const关键字作用

1.const修饰变量。值不能改变

    const int param= 6; //值不能改变

    param= 7;//编译错误,assignment of read-only variable ‘param’

2.const修饰指针

a. int num[] ={1,2,3,4,5};

     const int* param=num;

     const 在指针前面,表示指向常量的指针,指针值可以改变(指向其他常量),但是指针指向的值不能变化,常用在参数传递。

     *param=2;//error,assignment of read-only variable ‘param’

     param++;//正确

 b.int* const param=num;

   const在指针后面,变量前面,表示指针常量,指针值 不能改变(不能指向其他常量),但是指针指向的值可以改变。

    *param =2;//正确

     param++;//error, increment of read-only variable ‘param’

3.const在函数后缀

      const放在成员函数作为后缀,method() const,表示不能修改任何类的成员变量值,否则,编译器报错。

     若要修改某个变量的值,必须声明为mutable

     如:

     class CConstTest
{
public:
    CConstTest(int x=0,int y=1) {m_x = x;m_y=y;m_z=0;}
    ~CConstTest() {}
    
    int GetX() const {   

        m_z++; //error

        m_y++; //ok

        return m_x;

   }
    int GetY() const {return m_y;}
private:
    int m_x;
    mutable int m_y;
   int m_z;    
};

4.const修饰返回值

const int *const method(const int *const &param) const;
  1          2            3          4             5

解析:该函数编译中有如下错误。

  non-member function ‘const int* const method(const int*)’ cannot have cv-qualifier
   去掉函数尾部的const 编译正常。

   什么是cannot have cv-qualifier?不能有CV限定符,在C++中CV限定符指const和volatile。

   在C++中,普通函数(非类的成员函数)不能有CV限定,即const和volatile限定。

   在C++中,静态成员函数(static成员函数)不能有CV限定,即const和volatile限定。

函数下面的数字1和2,表示返回指向常量的指针,不能修改指针指向的内容,可以改变指针值。

      const int *const 和 const int * 和 int *const 三种情况等同。   

函数下面的数字3和4,表示不能改变param的指针值和指的内容值。

函数下面的数字5(类的成员函数),表示不能修改类的任何成员变量(mutable除外)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值