1.const关键字
用const定义常量,一旦定义后不能修改,所以定义时必须初始化。
const对象默认为文件的局部变量,不能被其他文件访问。如果其他文件需要访问,则要用extern定义:extern const int g_iNumber
2.引用
引用是一种复合类型,通过在变量名前加&符号来定义。
引用是它引用的对象的别名。
必须在定义的时候就初始化,且不能将引用绑定到另一个对象。
const引用,是指向const对象的引用。const引用页可以指向非const对象,但非const引用不能执行const对象。
const引用可以初始化为不同类型的对象,比如
double dval = 3.14;
const int &r = dval;
编译器会把这些代码转换为
int temp = dval;
const int &r = temp;
3.typedef关键字
typedef double wages;
wages hourly, weekly; //double hourly, weekly;
typedef通常有三个目的:
为了隐藏特定类型的实现,强调使用类型的目的
简化复杂的类型定义,使其更易理解
允许一种类型用于多个目的,同时使得每次使用该类型的目的明确
4.枚举
enum关键字定义枚举类型。
enum open_modes { input, output, append };
默认情况第一个成员赋值0,依次递增
也可以定义枚举类型时指定值,enum open_modes {input = 1, output = 3; append = 3 }; // 枚举成员值可以是不唯一的
* 不能改变枚举成员的值,枚举成员本身是一个常量表达式。
5.class and struct
类类型和结构体类型只有一个区别:struct默认成员是public的,而class是private的。
6.设计自己的头文件
头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、extern变量的声明和函数的声明
头文件用于声明而不是用于定义。但有三个例外:头文件可以定义类,值在编译时就已知的const对象和inline函数
如果const变量不是用常量表达式初始化,那么它不应该在头文件定义,而应该在源文件中定义。若需要被其他文件共享,则用extern声明定义