关于const的那些事

最近在通过 C++ Primer 这本书复习C++。在看到const这一节中,看到了很多容易混淆的几个点,因此记录下来。

为什么使用const

在程序中,如果经常用到一个数字,那么就可以将它定义为一个变量,这样,在改变一个数字的时候,就只需要改变这个变量的值就好了,这样在使用次数很多的时候,会大大减小工作量。

但是在程序中,很容易就造成该变量的数值变化了,而且有些是很不容易发现的错误。

就像是

#include 
using namespace std;
int main() {
    int a = 1024;
    if (a = 1) { // 在这里,就对 a 的值进行了修改,而且是很不容易发现的错误
        // ...
    }
    return 0;
}

所以,此时就需要 const 类型的变量。

所谓 const 类型的变量,是指的在C++中,const 关键词告诉编译器,这个变量的值是不变的,不能对其进行修改,也就是我们常说的 Read-Only 类型的变量。

const的定义方法

在定义 const 变量的时候,因为常量在定义后不能对其值进行修改,所以,在定义的时候,一定要进行初始化。例如

const int a = 1024;
const在指针中的应用

在实际中,指向常量的指针,往往被用于函数参数

一、
试图将一个非 const 对象的指针指向一个常量对象,会引起编译错误。

const double a = 10;
double *p = &a; // Error.

二、
const double *p; 定义一个指向 double 类型的 const 对象的指针,可以从右向左理解,p是一个指向 double 类型的、被定义为 const 类型 的指针。我们可以对其进行重新赋值,使其指向不同的对象,但是不能改变 p 指向的对象的数据。

#include 
using namespace std;
int main() {
    double a = 10, b = 12;
    const double *p = &a;
    *p = 11; // Error.
    p = &b; // OK.
    return 0;
}

三、
int *const p = &a;定义一个指向非 const 对象的 const 指针,可以从右向左理解,p是一个指向 int 类型对象的 const 指针。它不能指向 const int 类型的对象。

你可能感兴趣的:(关于const的那些事)