const概述
const是指使用C和C++中常见关键字,在C语言中,主要用于定义变量为常类型以及修饰参数与返回值,而在C++中,还可以修饰函数的定义,定义类的成员函数。常类型的变量或对象的值时不能被更新的。
一般而言,const有以下几个方面的特点:
- 1、定义const常量,具有不可变形。例如:
const int MAX = 100;
int array[MAX];
-
2、进行类型检查,使编译器对内容有更多了解,消除了一些隐患。例如:
void f(const int i){...}
编译器就会知道i是一个常量,不允许修改。 -
3、为函数重载提供参考。
class A
{
void f(int i){};
void f(int i)const {};
};
-
4、节省空间。const定义常量从汇编角度来看,只是给出了对应的内存地址,而不像#define一样给的是立即数,所以const定义的常量在运行过程中只有一份复制品,而#define定义的常数在内存中则有由若干复制品。
-
5、提供程序效率。编译器通常不为普通const常量分配存储空间,而是将其保存在符号表中,这使得他们成称为编译期间的常量,没有了存储与读内存的操作。使得它们的效率很高。
引申:什么情况下使用const关键字?
- 1、修饰一般常量,例如
int const x = 2;
const int x = 2;
- 2、修饰常数组。定义或说明一个常数组,例如
int const a[8] = {0, 1, 2, 3, 4, 5, 6, 7};
const int a[8] = {0, 1, 2, 3, 4, 5, 6, 7}q;
- 3、修饰常对象
class A;
const A a;
A const a;
- 4、修饰常指针。
const int * A;//const修饰指向对象
int const * A;//const修饰指向对象
int * const A;//const修饰指针
const int * const A;//const修饰指向对象与指针
- 5、修饰常引用,表示不可通过该别名修改变量值。需要注意的是,常引用可以绑定到右值上。
int x = 10;
const double& cdr = 1.0;
const int& y = x;
- 6、修饰函数的常参数。
void fun(const int i);
- 7、修饰编译器的返回值。表示返回值不可修改。
const int fun();
const Myclass fun2();
- 8、修饰类成员函数。在调用时,不能修改类对象成员非静态成员变量的值。采用thiscall函数调用方式,因此不可修饰静态函数(调用规约是__cdecl或__stdcall)。关于函数调用可参考C++中函数的调用方式
class ClassName
{
public:
int fun() const;
};
- 9、在另一文件中引用const变量。变量在另一文件中不能被再初始化。
extern const int i;
网友评论