c++基础-- const 限定符

来源:互联网 发布:淘宝卖家封号 编辑:程序博客网 时间:2024/06/05 14:31

1、const限定符

  const int bufSize = 512;表示bufSize这个数的值不能再被改变

  const对象必须初始化

2、const的作用域

默认下const仅在文件内有效

如果要在多个文件内使用同一个const,在定义和声明时都需要使用extern关键字

extern关键字:

c++支持分离式编程,该机智允许将程序分割为多个文件,每个文件可被独立编译。

在c++中声明和定义区分开来,声明使得程序为程序所知,所以如果一个文件想要使用别处定义的名字必须要喊对那个名字的声明。定义负责创建与名字关联的实体。

声明而不定义的方法是在变量名前添加extern关键字,而且不要显式地初始化变量(如果赋值,那么就变成了定义)。例:extern int i;

3、const的引用

1)、const i = 3;

const &ri = i; 常量i的引用必须用常量

2)、引用的类型必须与所引用对象的类型一致。有两个例外,第一个就是在初始化常量引用时允许任意表达式作为初始值,只要结果能够转换成引用的类型即可

例如:const int &a = x*2, &b = 3.14;

增加一个临时量对象,因为常量引用不能改变被引用的值,所以不会有影响。

4、指针和const

1)、指针的类型必须与其指向的对象的类型一致。第一种例外的情况就是:允许一个指向常量的指针指向一个非常量的对象。

例:const int a = 3;

int b = 4;

const int *c = &a;正确,指向常量

const int *c = &b;正确,指向非常量

2)、const指针

定义是就要初始化,一旦初始化,不能修改它的值。

例:int *const a = &b;那么a一值都会指向b。

指针本身是常量并不意味着不能通过指针修改所指对象的值。

5、顶层const和底层const

顶层const表示指针本身是一个常量。对任意数据类型都试用。

底层const表示所指的对象是一个常量。与指针和引用等符合类型的基本类型有关。

const int a = 3;const是顶层const,表示a是一个常量。

const int *const p = &q;左侧的const是底层const表示指向的q是int的常量,右侧的const是顶层const表示指针p是常量指针。

6、constepr和常量表达式

常量表达式:表示不会改变并且在编译过程中就能得到计算结果的表达式。

用常量表达式初始化的const对象也是常量表达式。

c++新标准规定,允许将变量声明为constepr类型以便由编译器验证变量的值是否是一个常量表达式。

7、constepr和指针

constepr指针的初始值必须是nullptr或者0,或者存储于某一个固定地址中的对象(定义在函数体外的对象的地址固定不变/函数体内可以定义超出函数本身的变量,也可以使用)。

例:constepr int *q = nullepr;constepr把定义的对象设置为顶层const。

1 0