对const的补充---C++初学之路
来源:互联网 发布:尔玛网络 编辑:程序博客网 时间:2024/06/06 04:13
*以下是自学《C++PRIME》以及通过网络的个人学习记录,不保证权威*
今日的插曲:偶然的一次搜索,看到一个问题,一个数组,里面又六个数字,如何让这个数字头尾交换来输出。
看到这个问题,自己第一印象,那就用循环呗,A[0]和A[5]换呗,一次一次的换。然后再去看看其他人是如何做的。
看到一个回答,说递归,然后列了个代码,代码如下:
void re(int* A,int be,int en){ if(be<en) { swap(A[be],A[en]); re(A,++be,--en); }}
同种代码,让我写,我估计可以写个二十来行,别人能用几行搞定。
意识到:数据结构的作用,所以,C++初学之路再加上数据结构,一起学吧!
好了,进入正题:constexpr,常量表达式,再prime中原句是:保证再编译过程中就能得到计算结果。
这句话对我很重要,至少,从这句话我就能分辨出哪些是常量表达式。
const int max_files=20;const int limit=max_files+1;int staff_size=27;//不是常量表达式const int sz=get_size()j;//sz本身是常量,但是后面的get_size()函数的具体值是直到运行时候才能获取。
constexpr是在C11时候提出的,在网上的资料整理得出:
constexpr:侧重 于编译过程中就能得到计算结果(也是prime中的一句话)
const:则是限定所修饰的常量它是不可以改变的。
对于constexpr的特性,又得到一个新的概念:字面值类型。简单,值显而易见,容易得到。
字面值类型里面包括算术类型,引用,指针等等。那么指针和引用也包括在内,那就又指针和constexpr 引用和constexpr
constexpr修饰的指针,只对指针有效,与指针所指向的对象无关。并且,一个constexpr修饰的指针,初始化必须是nullptr,或者存储固定地址的对象。
也就是将这个指针置于顶层const。
constexpr指针可以指向常量,也可以指向非常量。
那么constexpr这个限定符究竟有什么用?在知乎上有一句话:constexpr不是对象类型,仅仅只是用来确保初始化的是常量表达式。
感觉今天学的东西有点儿少,只学了constexpr.现在是十一点半,继续呗,感觉从指针引用到constexpr,prime上的编程题少了,概念题目多了,
去找找编程题保持下,出发咯。快乐的学习者。
- 对const的补充---C++初学之路
- C++初学之路:const
- const限定符----C++初学之路
- C++之const对象只能调用const成员函数---补充(18)《More Effective C++》
- c语言初学-const指针
- C++------对文件的操作(初学)
- C语言初学--对变量的认识
- 初学C#,对委托的初认识
- C语言对const的理解
- C语言中对const的理解
- C++对C的const扩展
- const关键字之对编译器的猜想
- iphone开发随笔-对c 指针的补充
- 对MPlayer的补充
- 对web的补充
- Android开发之对Frame动画播放的补充
- 初学linux c编程 对select()自己的理解
- 初学c语言--对正余弦函数的编写
- 数据库垂直和水平切分
- 运行时异常和一般异常的不同
- 对2017大学生数学建模大赛的总结
- Qt学习之路——常见问题及解决办法
- svm与logistic regression的区别
- 对const的补充---C++初学之路
- 欢迎使用CSDN-markdown编辑器
- java基础——接口
- 强盗分宝石
- NYOJ 24
- 常用SQL语句整理
- Ubuntu 环境下android 串口打印卡住
- android listView控件用法
- POJ 1321 棋盘问题 ; ( 1 )