C++ Prime(第五版)--第二章学习记录

Posted 柔海石涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Prime(第五版)--第二章学习记录相关的知识,希望对你有一定的参考价值。

尽管最近忙于单车组的调试工作,最终还是决定抽出时间把本书的内容学习一遍,摘录其中一些内容并加入我的思考。

1. 如何选择类型

- 明确知晓数值不可能为负数时,选用无符号类型

- 整数运算依据数值范围选用int或long long

- 算术表达式不选用bool和char

- 执行浮点数运算用double

2. 指针字面值常量

- nullptr

3. 初始化

- 初始化 != 赋值

- 列表初始化

//以下两者等价int a{0};int a=0;

- 建议初始化每一个内置类型的变量

4. 变量声明和定义的关系

- 变量定义:用于为变量分配存储空间,还可为变量指定初始值(初始化)。- 变量有且仅有一个定义。

- 变量声明:用于向程序表明变量的类型和名字。

- 定义也是声明:当定义变量时我们声明了它的类型和名字。

-  extern关键字:通过使用extern关键字声明变量名而不定义它。

5. 引用和指针·

- 引用即别名,引用不是对象

- 指针本身是一个对象,可以被引用

- 空指针

int *p=nullptr;

- 解引用

int a=42,*p=&a;//*p的值==a的值

- void*指针

- const引用可以绑定一个非常量,但不可以通过该引用修改该非常量值

6. const指针,指向常量的指针,指向常量的const指针

int *const p=&a;

- 指向常量的指针,该指针指向的常量不能修改

const int *p=&a;//相当于先对p解引用,再用const修饰

- 指向常量的const指针

const int *const p=&a;

7. 顶层const和底层const

- 针对指针的区分方法:

   · const在*左边为底层,在右边为顶层

   · 从右向左阅读,观察const限定修饰对象

- 不能将底层const指针赋值给非底层const指针

8. constexpr和const的区别和联系

-

const在c中只有“只读”的语义,在c++98中有“只读”和“常量”双重语义。

在“只读”情况下并不能表示该量一定为常量,在特殊情况下会导致程序出错。constexpr在c++11中被引用于表示“常量”

-

const 语义是只读,所以可以在运行时进行初始化

constexpr 语义是常量,所以编译时就要进行初始化

9. 别名声明


using A = int;

10. auto和decltype的区别和联系

- auto自动类型推断,用于从初始表达式中推断出变量的类型,会被表达式赋值

- decltype类型说明符,用于从表达式的类型推断出要定义的变量的类型

- 对于decltype所用的表达式来说,如果变量名加上一对括号,则得到的类型与不加上括号的时候可能不同。

int i;decltype(i) // int类型decltype((i)) // 当作表达式对待,int& 类型

over

以上是关于C++ Prime(第五版)--第二章学习记录的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer(第五版) 整理和总结

c++ primer--第五版--第一部分--c++基础

c++primer第五版中文版第二章学习笔记

生物统计学(第五版)目录

C++ Primer 第五版 部分课后题答案

《C++ Primer第五版中文版》PDF高清