C++ Primer阅读笔记--const限定符的使用
Posted 憨豆的小泰迪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer阅读笔记--const限定符的使用相关的知识,希望对你有一定的参考价值。
1--知识点
① const 对象必须初始化:
const 对象一旦创建后其值不能再改变,因此 const 对象必须初始化;
const int k; // 错误,未被初始化
const int j = 42; // 正确,const对象被初始化
② const 对象的共享:
const 对象被设定为仅在定义的文件内有效,当在多个文件之间共享 const 对象时,需在变量的定义前添加 extern 关键字;
// 假设file1.cc中定义并初始化了以下常量,则该常量能被其他文件所访问
extern const int bufSize = fcn();
// 假设以下file1.h头文件声明了一个常量,则其与file1.h中的bufSize是同一个
extern const int bufSize;
③ const 的引用:
将引用绑定到 const 对象中,称为对常量的引用,即对 const 的引用称为对常量的引用;
对常量的引用不能被用作修改它所绑定的对象;
④ const 和指针:
指向常量的指针(黑马教程称为常量指针):
const double pi = 3.14;
const double *cptr = π // cptr为一个指向常量的指针
指向常量的指针:指针指向的值不可修改,即*cptr不能修改;而指针的值可以修改,即cptr可以修改,从而指向不同的对象;
常量指针(黑马教程称为指针常量):
int errNumb = 0;
int *const curErr = &errNumb;
常量指针:指针指向的值可以修改,即*curErr可以修改;而指针的值不能修改,即curErr不能修改;
指向常量的常量指针:
const double pi = 3.14;
const double *const pip = π
指向常量的常量指针:指针指向的值和指针的值均不能修改!
⑤ 顶层 const 和底层 const 的概念:
顶层 const:表示指针的值是一个常量;
底层 const:表示指针指向的对象是一个常量;
⑥ constexpr和常量表达式:
常量表达式:值不会改变,在编译过程中就能得到计算结果的表达式;
用常量表达式初始化的 const 对象也是常量表达式,例如:
const int A = 20; // A是一个常量表达式
const int B = A + 1; // B也是一个常量表达式;
常量表达式由数据类型和初始值共同决定:
const int A = 20; // A是一个常量表达式
int B = 27; // B不是一个常量表达式
constexpr 变量:C++11新标准允许将变量声明为 constexpr 类型,以便由编译器来验证变量的值是否是一个常量表达式;
声明为 constexpr 的变量一定是一个常量,必须用常量表达式进行初始化;
C++新标准允许定义一种特殊的 constexpr 函数,其足够简单以使编译阶段就能计算结果;可以用 constexpr 的函数去初始化 constexpr 的变量;
constexpr int mf = 20; // 20是常量表达式
constexpr int limit = mf + 1; // mf + 1是常量表达式
constexpr int sz = size(); // 只有当 size 是一个 constexpr 函数时,其是一条正确的声明语句;
一个 constexpr 指针的初始值必须是 nullptr 或 0,或者是存储于某个固定地址中的对象;
在 constexpr 声明中如果定义了一个指针,则限定符 constexpr 仅对指针有效,与指针所指的对象无关;
const int *p = nullptr; // p是一个指向整型常量的指针(即*p不可变,p可变)
constexpr int *q = nullptr; // q是一个指向整数的常量指针(即*q可变, q不可变)
C++ Primer阅读笔记:const | constexpr | 类型别名 |auto
目录
简介
Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
唯有努力
遇到高山,我会仰望,同时也会去征服高山…
本文仅记录自己感兴趣的内容
以上是关于C++ Primer阅读笔记--const限定符的使用的主要内容,如果未能解决你的问题,请参考以下文章