您的位置:首页 > 编程语言 > C语言/C++

c++(11)const限定符(二)

2016-09-13 18:40 183 查看
顶层const
顶层const表示指针本身是一个常量,底层const表示指针所指向的对象是一个常量。

首先对于普通常量的定义:

int const a = 40;

const int a = 40;

这两种定义的形式表示的意义是相同的。

再说对于指针的定义:

int b = 20;

int *const p = &b;

这样的定义表示指针p本身是一个常量,它的地址和它指向的对象都是不能被改变的。是一个顶层const。

const int *q = &a;

这样的定义表示的是指针q指向一个常量,它所指向的对象的值是不能被改变的,但是这个指针本身并不是常量。这是一个底层const

const int *const x = q;

这样的定义表示指针x是一个常量,并且这个指针指向一个常量。其中靠左边的const是底层const,靠右边的常量是一个顶层const。

constexpr和常量表达式

常量表达式是指值不会改变并且在编译过程中就能计算出结果的表达式。

例如:

const int a = 20;

const int b = a + 1;

const int c = getSize();//错误,c会在运行时被初始化

constexpr变量

在c++11新标准中,允许将变量声明成constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息