C/C++关键字之const

简介: const是C和C++中常见的关键字,在C语言中主要用来定义常量和修饰函数的参数和返回值,在C++中还可以用来修饰类的成员函数等 一. 什么情况下使用const关键字? 1.

const是C和C++中常见的关键字,在C语言中主要用来定义常量和修饰函数的参数和返回值,在C++中还可以用来修饰类的成员函数等


一. 什么情况下使用const关键字?

1. 修饰常量,比如const int MAXN = 10 或者 int const MAXN = 10;或者修饰常量数组const int ARR[2] = {1,2};

    编译器通常不会为常量分配内存空间,而是将他们存储到符号表中,使得他们成为一个编译期间的常量,没有存储和读内存效率很高


2. 修饰指针

    (1)指针常量:int *const P,修饰指针P是一个不可改变的指针变量,但是指针P指向的对象可以改变。

        比如 int *const P = &a,则指针P不能在指向其它的对象,而对象a是可以改变的

    (2)常量指针:const int *P,修饰指针P是一个指针变量可变,但是指针P指向的对象不可改变。

        比如 const int *P = &a,修饰指针P是一个指向对象a的变量,P可以指向其它对象比如b,但是对象a的值不能改变。

    (3)指向常量的指针常量: const int *const P,修饰指针P是一个不可改变的指针变量,并且P指向的对象是一个常量不可改变。比如 const int *const P = &a,则指针P只能指向对象a,并且a的值不可改变


3.  修饰函数的参数,比如void Fun(const int &a),说明形参a是一个常量引用在函数体内是无法被修改的,可以用来防止某些参数被无意修改或错误的修改


4. 修饰函数的返回值,比如const int* Fun(void),说明函数的返回值是一个常量指针,是不能够被改变的,只能把返回值赋值给相同类型的变量。


5. 修饰类的成员函数,比如 void Fun(void) const{},说明实例化对象在调用成员函数Fun的时候是不能更改对象的数据成员


二. 常引用

1. 常引用也称为const引用。我们知道引用实际是对象的一个别名,对引用的任何修改都相当于直接修改对象本身。因为为了避免在使用引用变量的时候更改了对象的值,我们引入常引用,保证引用变量只是可读并不允许更改

2. 常引用声明方式一般如下:const int &p = a,定义a一个引用p并且p是只读

3. 常引用经常用于函数的参数,用来表示参数只是可读并且是不能被修改的 



目录
相关文章
|
25天前
|
存储 安全 算法
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
24 0
|
25天前
|
设计模式 算法 安全
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
37 1
|
25天前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
25 0
|
25天前
|
算法 Java 编译器
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
25 0
|
6天前
|
编译器 C++
|
9天前
|
编译器 C语言 C++
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
|
22天前
|
安全 算法 编译器
【C++中的const函数】何时与如何正确声明使用C++ const函数(三)
【C++中的const函数】何时与如何正确声明使用C++ const函数
26 0
|
22天前
|
安全 编译器 Linux
【C++中的const函数】何时与如何正确声明使用C++ const函数(二)
【C++中的const函数】何时与如何正确声明使用C++ const函数
26 0
|
22天前
|
安全 编译器 C++
【C++中的const函数】何时与如何正确声明使用C++ const函数(一)
【C++中的const函数】何时与如何正确声明使用C++ const函数
20 0
|
22天前
|
存储 算法 编译器
【C++ 关键字 static_assert 相关问题】C++ 关于静态断言的编译问题 ,深入了解静态断言
【C++ 关键字 static_assert 相关问题】C++ 关于静态断言的编译问题 ,深入了解静态断言
28 0