C++ const用法总结


C++中const限定符,用于修饰不可改变的量,大体用法主要有以下几种。

  • const修饰常用数据类型
  • const修饰函数的传入值
  • const在类中的用法
  • const声明类的常量对象

1.const修饰常用数据类型

1.1修饰一般常量及数组

const修饰一般常量

int const num = 100;

const修饰数组

int const array[3] = {1,2,3};

用const声明常量必须初始化,const限定符修饰的常量不可以改变其值,以下写法都是错误的:

int const num ; 						//没有初始化

int const bufSize =512;
bufSize = 10 ;    					    //const常量不可以改变其值

1.2修饰指针

const修饰指针有两种,第一种是const限定符在 * 左边,例如 int const *p,表示的是常量指针,本质是一个指针,指向一个不可以改变的常量。常量指针指向的值不能变,指针可以变,如下图所示。
在这里插入图片描述

int a = 100; 
int b = 200;
int const *p = &a;
*p = b;                 //错误,指向的值不能变
p = &b;                 //正确,指针可以改变

第二种是const在 * 右边,即 int * const p,称为指针常量。指针常量本质是一个指针类型的常量,p本身的值不可以修改,但是可以修改p指向的值。
在这里插入图片描述

int a = 100 ;
int b = 200;
int *const p = & a ;
*p = b;			 		//正确,指向的值可以改变
p = &b;					//错误,不可以改变指针的值

常量指针和指针常量可以用来规范接口。防止在实现函数内部的时候,改变了接口参数指向的值(指针常量),或者把参数错误指向别的地方(常量指针)。

2.修饰函数的传入值或者返回值

2.1 用于函数的形参

void fun(const int * p)

const用于函数形参,表示该参数在函数内部不会被改变,当函数要传入某个指针或者数组,但不想在函数运行结束以后,改变它们的值,即可用const修饰。

3. const在类中的用法

3.1 const 修饰类中的成员函数

在类中,声明为const的成员函数,不能修改数据成员的值,也不能调用非const成员函数,因为非const成员函数会改变数据成员的值,所以const成员函数既不能改变数据成员的值,也不能调用非const成员函数。

#include <iostream>
using namespace std;

class A{
private:
    int i;
public:
    //set函数需要设置i的值,所以不能声明为const
    void set(int n){ 
        i = n;
    }
     //get函数返回i的值,不需要对i进行修改,则可以用const修饰。防止在函数体内对i进行修改。
    int get() const{ 
        return i;
    }
};

3.2 类中声明枚举变量

class test
{
     enum { SIZE1 = 10, SIZE2 = 20}; // 枚举常量
     int array1[SIZE1];  
     int array2[SIZE2];
};

4. const声明类的常量对象

常量对象只能调用常量函数,别的成员函数都不能调用。

 class test
{
public:
    test():x(1)
    {
        y=2;
    }
    ~test()
    {}
    void set(int yy)
    {
        y=yy;
    }
    int getx() const
    {
        return x;
    }
//protected:
    const int x;
    int y;
};
void main()
{
 const test t;
 t.set(33);          //error
 t.getx();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值