C++primer第二章变量和基本类型
C++primer第二章变量和基本类型
Hoshea Zhang第一章作为基础内容的介绍,这里就忽略不讲了
这个博客系列主要是阅读笔记,记录一些重点或者细节,不会事无巨细的记录,毕竟这本书太厚了
基本内置类型
建议:如何选择类型
事实上,大多数程序员能够(也应该)对数据类型的使用做出限定从而简化选择的过程,比如:
- 当明确知晓数值不可能为负时,选用无符号类型
- 使用int执行整数运算,如果数值范围超过了int,使用long long
- 算术表达式中不用char bool
- 浮点数运算用double
字面值常量
我们可以将整型字面值写作十进制数、八进制数或十六进制形式,用0x或者0X开头来表示十六进制,用0开头来代表八进制数
转义序列
| 含义 | 转义序列 |
| ——— | ———— |
| 换行符 | \v |
| 制表符 | \t |
| 回车符 | \r |
变量
列表初始化
1
2
3
4
5
6
7int units_sold = 0;
int units_sold = {0};
int units_sold{0};
int units_sold(0);C++11的新特性,现在随时都可以用花括号即列表初始化为变量赋初值
若列表初始化的初始值存在丢失信息的危险,则编译器会报错,如下所示
long double id = 3.14;
int a{id};
复合类型
引用
因为无法将引用重新绑定到另外一个对象,因此引用必须初始化
引用并非对象,只是为一个已经存在的对象所起的另外一个名字
指针
- 指针是一个对象,允许对指针赋值和拷贝
- 指针无须定义时赋初值,和其他内置类型一样,如果不初始化会拥有一个不确定的值
关于
int *p
,这个只是修饰p而不是int,所以`int p1,p2`只有p1
const限定符
const对象一旦创建后其值不能被改变,所以const对象必须初始化
处理类型
类型别名
using SI = Sales_item;
auto
auto定义的变量必须有初始值
自定义数据结构
注意类的定义最后要加上分号
头文件
头文件也经常用到其他头文件的功能
比如一个类包含一个string成员,那么.h文件必须包含string.h头文件,同时.cpp文件需要操作string成员,所以也要包含string.h
预处理器概述
C++经常使用到的是头文件保护符,有效地防止重复包含的发生
第一次包含.h文件的时候,#ifndef 检查结果为真,预处理器一直执行后面的操作直到遇到#endif
后面再碰到这个.h文件将忽略中间的部分
即使该头文件还没有被包含到其他头文件中,也应该设置保护符,只需要习惯性加上就可以了,没必要考虑程序到底需不需要