基础知识
相比于python等语言,c++是静态类型的,变量的类型在编译时确定,而python在运行时确定。这对于C++编译器来说就必须在编译时知道所有变量的类型。
C++提供了很多内建(builtin)数据类型,运算符及流程控制申明。
C++之所以经久不衰是因为其能允许编程者实现自己的数据类型,并且可以实现很底层的操作。
Built-in Types
类型:定义数据和与之对应的操作
C++内建类型:
- 算数类型:
|  |  | 
- void类型
1 byte = 8 bits,C++的内存是按byte尺度来管理的,int类型占16 bits,则实际上一个变量占了两个地址单元大小的内存。
变量声明
TYPE NAME = VALUE;声明的同时进行赋值。
extern
使用extern关键字可以在其他文件中使用本文件中定义的变量
|  |  | 
scope
变量找最近的层,尽量不要让local的变量和global的变量重名。
复合类型(compound type)
引用(reference)&
bind to a local variable, 与一个局部变量绑定,绑定的变量发生改变,本变量就改变
不能和字面量(literal)和const绑定:
|  |  | 
指针(pointer)
- 定义指针: - TYPE * NAME = ADDRESS_LIKE
 
- 解引用的步骤 - 找到地址
- 根据地址去获取目标值
 
指针与引用的区别
引用一定要进行初始化
|  |  | 
const
- 用const修饰的变量不可在后面的过程中不可改变
- 必须要进行初始化(和引用一样)
使用场景:
- 不想数据被更改
|  |  | 
- 不想参数传递到函数后被更改
|  |  | 
const 与 引用结合
- 不能将常量绑定到非常量上
|  |  | 
- 引用不一定需要类型匹配
|  |  | 
const 与 指针结合
top-level const 修饰对象本身
low-level const 修饰基本类型(base type)
从右往左读
|  |  | 
第二句定义的对象pointer从右往左理解就是:
- pointer是一个const对象const pointer
- 这个const对象是一个指向int的指针(int *)int * const pointer
- 指向的int*是const的const int * const pointer
Type Alias
- using namespace::object
- auto
- decltype
|  |  |