【温故而知新】C和C++10:关于const限定符

简介: const关键字来源自constant,即是“常数、常量”的含义。在C/C++中,用于限定一个不能改变其值的变量。const类型的对象必须在定义的时候进行初始化(可以在编译时或者在运行时),并且一旦初始化完成后,这个值就不能再被改变。

const关键字来源自constant,即是“常数、常量”的含义。在C/C++中,用于限定一个不能改变其值的变量。const类型的对象必须在定义的时候进行初始化(可以在编译时或者在运行时),并且一旦初始化完成后,这个值就不能再被改变。通常情况下,const对象的有效范围是当前文件;如果多个文件中出现了同名的const变量,则认为是每个文件中都定义了不同的变量。如果希望在多个文件中共享这个对象,则在声明和定义的时候添加extern关键字,指明该对象并非本文件独有,可能被其他文件使用。


const引用:

对于一个const变量,也一样可以对其定义一个引用。我们知道,C++不允许随意改变某个引用所绑定的对象,因此一个对const对象引用不论是引用对应对象还是这个对象的值都不能改变,所以对于const对象的引用也可以称之为“常量引用”。由此带来的一个要求就是,指向该const对象的引用也必须是const类型,如:

const int ci = 1024;
const int &r1 = ci;//正确,const引用对应const对象
int &r2 = ci;//错误,如r2不是const类型

定义一个const引用可以绑定一个非const的值,但是不允许通过该引用修改这个值,如:

int a = 10;
const int &r1 = a;
r1 = 15;//错误,不允许通过const引用修改对象的值
a = 15;//正确

const和指针:

const与指针的关系相对于引用要复杂一些,因为涉及到指向常量的指针和自身是常量的指针两种关系。两者的区别如下:

int errNum = 0;
int *const pNum = &errNum;//指针变量本身是常量
const double pi = 3.14159;
const double *pPi1 = Π//指针指向的目标可变,但是必须是const对象
const double *const pPi2 = Π//常量指针,指向常量对象
double *const pPi3 = Π//错误,指向常量的指针必须前置const修饰

如何区别呢?简单地看,最前面的const表示指针所指向的是一个const对象,而*后面的const表示指针不能指向其他的对象,也就是指针本身是const类型的。 这两者也分别被称作底层const和顶层const。如果某个对象是const型,那指向这个对象的指针也必须以const定义在最前面。


目录
相关文章
|
1月前
|
编译器 C++
C++初阶--类与对象--const成员和日期类的实现
C++初阶--类与对象--const成员和日期类的实现
|
29天前
|
存储 安全 编译器
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
19 0
|
1天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
|
7天前
|
编译器 C++
|
23天前
|
安全 算法 编译器
【C++中的const函数】何时与如何正确声明使用C++ const函数(三)
【C++中的const函数】何时与如何正确声明使用C++ const函数
26 0
|
23天前
|
安全 编译器 Linux
【C++中的const函数】何时与如何正确声明使用C++ const函数(二)
【C++中的const函数】何时与如何正确声明使用C++ const函数
27 0
|
23天前
|
安全 编译器 C++
【C++中的const函数】何时与如何正确声明使用C++ const函数(一)
【C++中的const函数】何时与如何正确声明使用C++ const函数
21 0
|
26天前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
28 0
|
29天前
|
算法 C语言 C++
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
19 0
|
30天前
|
编译器 C++
在 C++ 中const 成员函数的运用
在 C++ 中const 成员函数的运用

热门文章

最新文章