变量与基本类型
1. 初始化
内置类型变量:定义在函数体外的初始成0,函数体内的不进行自动初始化
类类型变量: 如果定义某个类的变量时没有提供初始化式,它将通过 默认构造函数(default constructor)来实现
2. 声明与定义
extern int i; // declares but does not define i
int i; // declares and defines i
extern double pi = 3.1416; // declares and defines i
3. const 限定符
const 常量在定义时必须初始化
const 对象默认为文件的局部变量,要想其它文件访问,需加 extern修饰(这样设置默认情况的原因在于允许const变量 定义 在 头文件中):
file1: extern const int bufSize = fcn();
file2: extern const int bufSize; // uses bufSize from file1
4. 引用
引用必须与该引用同类型的对象初始化:
int ival = 1024;
int &refVal = ival; // ok: refVal refers to ival
引用只是对象的另一个名字,一经绑定,只要该引用存在,不能修改到其他对象
一个对象可以有多个引用,也可在一个类型定义行中定义多个引用:
int i =1024;
int j, &i1 = i, &i2 = i; //defines one object, and two references
const 引用是指向const对象的引用:
const int ival = 1024;
const int &refVal = ival; //ok: both reference and object are const8
int &ref2 = ival; //error:nonconst reference to a const object
const 引用与非const 引用:
const int &r = 1024;
const int &2 = r + r; //legal for const references only,beacuse:
double dval = 3.14; const int &ri = deal;
-->
int temp = dval; const int &ri = temp;
如果ri不是const,则可以给ri赋一新值,但不会修改dval的值,而是修改temp的值,为了完全避免这个问题,所以仅允许const引用可以绑定到不同但相关的类型的对象或绑定到右值。
5.typedef
dypedef double wages; wages val = 3.14;
typedef 定义以关键字typedef开始,后面是数据类型和标识符,标识符和类型名并没有引入新的类型,而只是现有数据类型的同义词,其设计目的有:
* 为了隐藏特定类型的实现,强调使用类型的目的;
* 简化复杂的类型定义,使其更易理解;
* 允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。
6. enum 枚举
枚举定义了整数常量集,而且还把它们聚集成组
enum open_modes (input, output = 3, append); // input = 0, append = 4;
7. 类类型
每个类都定义了一个接口(interface)和一个实现(implementation)
用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员是public, 而class的成员是private
8. 头文件
头文件用于声明而不是定义
一些const对象定义在头文件中,但如果该const变量不是用常量表达式初始化,则需要到源文件中定义并初始化,并在头文件中用extern关键字声明,以被多个文件共享