第一章 快速入门
1. 标准库定义4个IO对象:
- 处理输入时使用命名为cin的istream类型对象,这个对象也称为标准输入。
- 处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。
- cerr对象称为标准错误。
- clog对象用于产生程序执行的一般信息。
2. 输入/输出操作符(<<)
- 输入操作符:它接收一个istream对象作为其左操作数,接收一个对象作为其右操作数。它从istream操作数读取数据并保存到右操作数中。返回其左操作数作为结果。
- 每个输出操作符实例都接收俩个操作数:左操作数必须是ostream对象,右操作数是输出的值。返回其左操作数作为结果。
- endl:是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓存区。忘记刷新输出流可能会造成输出停留在缓冲区中。
3. 使用标准库中的名字
前缀std::表明cout和endl是定义在命名空间std中的。使用命名空间,程序员可以避免由于无意中使用了与库中所定义名字相同的名字引致冲突。标准库定义的名字是定义在命名空间中的。
副作用:当我们使用标准库中的名字时,必须显示地表达出使用的是命名空间std下的名字。std::cout的写法使用了作用域操作符。
第二章 变量和基本类型
1. 了解基本内置类型
2. 了解变量以及C++的关键字
3. 初始化
C++支持俩种初始化变量的形式:
- 复制初始化:int a = 1024;
- 直接初始化:int a(1024);
- 直接初始化语法更灵活并且效率更高。
- 对于内置类型的对象来说复制初始化和直接初始化几乎没有差别。对于类类型的对象来说,有些初始化仅能用直接初始化完成。
- 定义如何初始化的成员函数称为构造函数
- std::string all_nines(6,'9');//all_nines = "999999"。有多个初始化式时不能使用复制初始化。
4. 变量初始化规则
5. 类类型变量的初始化
类通过定义一个或多个构造函数来控制类对象的初始化。如果定义某个类的变量时没有提供初始化式,这个类也可以定义初始化时的操作,它是通过定义一个特殊的构造函数即默认构造函数来实现的。
6. 声明的定义
- 变量的定义:用于变量分配存储空间。变量有且仅有一个定义
- 声明:用于向程序表明变量的类型和名字。
- extern关键字
7. 作用域
8. const限定符
9. 引用
引用时一种复合类型,通过在变量前添加“&”符号来定义。
10. 枚举
- 枚举的定义包括关键字enum,其后是一个可选的枚举类型名,和一个用花括号括起来,用逗号分开的枚举成员。
- 默认,第一个枚举成员赋值为0,后面的每个枚举成员赋值比前面的大1。
- 枚举成员是常量,用来初始化枚举成员的值必须是常量表达式。
- 枚举类型的对象初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行。
11. 类类型
- 每个类都定义了一个接口和一个实现。
- 类体定义了组成该类型的数据和操作。这些操作和数据是类的一部分,也称为类的成员。操作称为成员函数,而数据则称为数据成员。
- 当定义类的成员时,只能指定该数据成员的名字和类型。类不是在类定义里定义数据成员时初始化数据成员,而是通过称为构造函数的特殊成员函数控制初始化。
12. struct关键字
用class和struct关键字来定义类的唯一区别在于默认访问级别,默认情况下struct成员为public,而class成员为private。
13. 头文件
- 头文件用于声明而不是用于定义。
- 有三个例外:头文件定义类,值在编译时就已知道的const对象和inline函数。
14. 避免多重包含
使用#ifndef #define #endif
本人学习后整理,欢迎大家指出问题。