typedef名字

-用来定义类型的同义词:typedef double wages;//wages是double的同义词

-typedef通常被用于以下三种目的:

为了隐藏特定类型的实现,强调使用类型的目的。

简化复杂的类型定义,使其更易理解。

允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。

枚举(enum)

定义和初始化枚举

如:enumopen_modes(input,output,append);  // input is 0, output is 1, and append is 2默认地,第一个枚举成员赋值为 0,后面的每个枚举成员赋的值比前面的大1。

包括以下几个部分:

关键字enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员列表。

-用来初始化枚举成员的值必须是一个常量表达式。

不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以也可用于需要常量表达式的任何地方。

每个 enum 都定义了一种唯一的类型。

枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行

类类型

每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行的操作组成。实现一般包括该类所需要的数据。实现还包括定义该类需要的但又不供一般性使用的函数。

定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类的实现。

-类定义以关键字class开始,其后是该类的名字标识符。类体位于花括号里面。

-注意:花括号后面必须要跟一个分号。

如:

class Sales_item{
public:
      //operations on Sales_item objects willgo here
private:
  std::string isbn;
  unsigned units_sold;
  double revenne;
};

解析:public和private被称为成员访问限定符,用它们来声明各成员的访问属性。

花括号里面的是类体,类体定义了组成该类型的数据和操作。

-操作称为成员函数,数据则称为数据成员

-注意:结构体(struct)跟类(class)的不同,它们定义类的唯一差别在于默认访问级别:默认情况下,struct的成员是public,而class的成员为private。还有一点,结构体没有构造函数。

编写自己的头文件

-头文件一般包含类的定义、extern变量的声明和函数的声明。

头文件的正确使用能够带来两个好处:

保证所有文件使用给定实体的同一声明;

当声明需要修改时,只有头文件需要更新;

-头文件用于声明而不是用于定义

-头文件可以定义类、值在编译就已知道的const对象和inline函数。

-一些const对象定义在头文件中为了是编译器能够看见其初始化式。

-如果const变量不是用常量表达式初始化,那么它不应该在头文件中定义。

预处理器的简单介绍

-#include指示只接受一个参数:头文件名

-重要:设计头文件时,应使其可以多次包含在同一个源文件中。

-预处理器变量有两种状态:已定义或未定义。

#define指示接受一个名字并定义该名字为预处理器变量。

#ifndef指示检测指定的预处理器变量是否未定义。如果未定义,那么跟在其后的所有指示都被处理,直到出现#endif。

注:如果头文件名括在尖括号(<  >)里,那么认为该头文件是标准头文件。

如果头文件名括在一对引号里,那么认为它是非系统头文件。