C++常见关键字 const

const关键字是一种类型说明符,它的应用基本在三个方面上:

  1. 变量(普通变量,类实例,指针等)
  2. 函数(常函数、函数返回常量值和参数限制、Lambda表达式等)
  3. 类成员修饰(前面两种的用法),需要注意的是,在函数的重载(overload)中,const是可以作为控制受限的,换句话说,可以通过其进行函数重载。

常函数只能访问常量(有的编译器允许访问变量,但不可改变值)即不可改变变量的值。

常对象只能访问对象的常量,同常函数一样,不允许改变对象的值。

1. const和指针

一个简单的测试代码:


C++常见关键字 const_第1张图片

运行时查看各个变量的情况:

C++常见关键字 const_第2张图片

简单总结就是const离谁近就是修饰谁的。const int* pa1和int const* pa2都是修饰int,int* const pa3修饰指针。

2. const 和引用

首先,引用本身就是不能再次赋值,所以加不加const都无所谓,如果加了会报一个warning(忽略引用上的限定符)。

其次,const对引用的修饰逻辑跟指针一样。

时间编码过程中,经常使用const T&,这样作为参数也好,作为局部变量也好都会节省一次内存申请的开销。所以使用const T&是一个很好的习惯。

C++常见关键字 const_第3张图片

编译时查看局部变量,发现就ra3不是常量,其他都是常量

C++常见关键字 const_第4张图片

3. const和函数

 const 修饰返回值,只是说返回值是const或者const T&;

const 放在函数后面修饰函数,说明函数是const的,即是函数不能修改成员变量的值。

下图中_a明显是一个可修改的值,但是由于函数修饰了const,函数里面不可更改_a。

C++常见关键字 const_第5张图片

本文使用的所以代码:

#include 
#include 
using namespace std;

class A
{
public:
    const int& get()
    {
        return _a;
    }

    void set(int a) const
    {
        _a = a;
        int b = _a;
    }

    int _a = 0;
    const int _B = 0;
};


int main()
{

    int a = 1;
    int b = 1;
    const int& ra1 = a;
    int const& ra2 = a;
    int& const ra3 = a;
    const int& const ra4 = a;
    ra1 = 2;
    ra2 = 2;
    ra3 = 2;
    ra4 = 2;

    const int* pa1 = &a;          // 一个指针,指向一个常量
    int const* pa2 = &a;          // 同上
    int* const pa3 = &a;          // 一个指针,它是常量,但是指向的空间不是常量
    const int* const pa4 = &a;    // 一个指针,它是常量,但是指向的空间也是常量

    *pa1 = 2;
    *pa2 = 2;
    pa1 = &b;
    *pa3 = 2;
    pa3 = &b;
    *pa4 = 2;
    pa4 = &b;

    return 0;
}

你可能感兴趣的:(C++,linux,面试,c++,开发语言)