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类型以便由编译器来验证变量的值是否是一个常量表达式。
顶层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类型以便由编译器来验证变量的值是否是一个常量表达式。
相关文章推荐
- (11)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第三节
- More Effective C++ 条款11
- C++ 11(购物打折)
- 11、C++各大有名库的介绍——综合
- 09-11-11:ANSI C/C++方面的知识
- C++ const限定符
- C/C++笔试题(11)
- Windows Via C/C++ 读书笔记 11
- 我的C++实践(11):存放异类对象的元组类型
- [收藏]C++ Tips(11)--static的使用
- C++复习 11 泛型算法
- C++学习笔记(11)——虚函数的特性
- 孙鑫C++视频笔记(11)图形的保存和重绘
- C++ FAQ 11
- [收藏]C++ Tips(11)--static的使用
- More Effective C++之11
- ANSI/ISO C++ Professional Programmer's Handbook 11
- [转]C++异常处理 11
- The c++ template metaprogramming( Chapter 11. A DSEL Design )
- c++学习方法11