变量和基本类型
基本内置类型
算数类型
整型
char
wchar_t
short
int
long
bool
浮点型
float
double
long double
变量
左值与右值
左值
右值
变量的声明
extern关键字可声明一个变量而不定义它
在全局作用域中定义的非const对象对整个程序的各个文件都可见
名字的作用域
全局
类
命名空间
局部
块
语句
引用
定义格式
const引用只能是可读的
非const对象只能绑定到与该引用同类型的对象
定义类型名
格式:typedef 类型 标识符
使用条件
隐藏特定类型实现,强调使用类型的目的
精简类型定义以便理解
多次使用同一类型,保持每次使用的目的明确
枚举
定义格式:enum 枚举类型名
头文件
类
用常量表达式初始化的const对象
inline函数
预处理器
include只接受一个头文件名作为参数
尖括号认为是标准头文件,在预定义位置查找
引号中被认为是非系统头文件,在源文件所在位置查找
标准库类型
标准库bitset类型
bitset
数组和指针
数组
多维数组
未提供初值列表,数组元素像普通变量一样初始化
指针
const限定符
不能通过这种指针修改所指对象,无论所指是否为const
const指针
指针本身的值不能修改,即不能改变指向,但可以改变所指对象的值
指向const对象的const指针
既不能改变所指对象的值,也不能改变指向
指向数组的指针
一个有效的指针三种状态
保存某确定对象的地址
指向一个对象的下一位置
值为0
表达式
表达式是否合法,合法表达式等均取决于操作数的类型
算术操作符
关系操作符合逻辑操作符
位操作符
赋值操作符
左操作数必须为非const左值
从右向左结合
自增自减操作符
箭头操作符
条件操作符
sizeof操作符
对表达式使用sizeof时该表达式的值不会被计算
对数组使用sizeof将得到整个数组在内存中的长度
逗号操作符
new,delete表达式
new表达式
动态创建维数为0值时也将返回有效的非零指针
可以创建动态的const对象或数组,她们无法修改但可以释放
单个对象 new[const] 类型名
一个数组 new[const] 类型名[维数]
添加空()可执行值初始化操作
delete表达式
delete ptr和delete[] ptr分别释放单个对象和动态数组
如果指针不指向new分配的对象,则对其delete不合法
delete之后需要重置为0
类型转换
隐式类型转换
算术类型间的转换
转换为指针
bool类型转换
枚举类型转换为整型
转换为const对象
显式类型转换
命名的强制类型转换
dynamic_cast
const_cast
static_cast
reinterpret_cast
语句
简单语句
表达式语句
空语句
声明语句
复合语句
控制流语句
条件分支结构
循环
break语句
continue语句
goto语句
try catch语句 throw表达式
return语句
函数
函数声明和定义
与变量类似
函数必须在调用前声明
函数声明可与定义分离
一个函数定义一次但可声明多次
函数声明由函数返回类型、函数返回类型和形参列表组成
函数的操作数--形参
函数一般在头文件中声明,在源文件中定义
将一个较小的、常被调用的函数定义为inline,避免调用函数的额外开销
函数的调用和参数传递
函数的调用
使用调用操作符()实现函数调用
函数调用两件事
首先隐式定义形参,并用对应的实参进行初始化
主调函数的执行被挂起,被调函数开始放行
非引用形参
指针形参
const形参
不适合复制实参的情况
需要修改实参值时
需要将大型对象作为实参传递时
无法复制对象时
引用形参
可以使用引用形参返回额外信息
可以使用const引用形参避免复制实参
使用引用形参时将不需要修改的定义为const会更灵活
通过传递迭代器来传递vector等容器
数组形参
把数组直接作为实参传给函数
把数组传递给函数处理
可以通过传递指向数组的指针来传递多维数组
含有可变形参的函数
默认实参
局部对象的作用域和生命期
函数体是一个作用域,在其中定义的变量称为局部变量
自动对象是局部于函数的对象,会在每次函数调用时重新创建
static局部对象确保不迟于在程序执行流程第一次经过该对象的定义语句初始化
函数的返回值和return语句
函数返回类型可为内置类型、类类型或复合类型
return语句用于结束当前函数,将控制权返回给该函数的主调函数
函数的重载
重载确定的三个步骤
确定候选函数集合
从候选函数集合中选择可行函数
函数形参与该调用的实参个数匹配
每个实参的类型须与对应形参匹配
可行函数满足条件
寻找最佳匹配
精确匹配--实参与形参类型相同
通过类型提升实现的匹配
通过标准转换实现的匹配
通过类类型转换实现的匹配
函数指针
定义形式
可使用typedef简化定义
对函数指针进行初始化和赋值
同类型的函数
同类型的函数指针
0值常量表达式
通过函数指针调用函数
函数指针作为形参时,*可写可不写
函数的指针作函数返回值
主函数
返回值
使用主函数形参出来命令行选项
主函数main不允许被显示调用,取地址或重载
标准IO库
IO标准库类型
标准输入输出对象
cin标准输入流
cout标准输出流
cerr标准错误输出流
clog标准日志输出流
文件输入输出流
字符串流