1、const限定符
定义一个变量代表某一个常数存在严重的问题,变量可以被修改,如果用const限定符可以解决此问题,把一个对象转换为常量。
const int bufSize = 512;
因常量在定义后不可以修改,所以在定义时必须初始化。
const string hi=”hello”
const对象默认为文件的局部变量。
2、引用
引用就是对象的另一个名字。在实际应用中,引用主要用作函数的形参。
引用是一种复合类型,通常在变量名前加上“&”符号来定义。
每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。
int ival = 1024;
int &refVal = ival;
引用是绑定的对象的另一个名字,作用在引用上的所有操作事实上就是作用在该引用绑定的对象上。
refVal +=2;
将refVal 指向的对象ival加2;
引用在定义时必须初始化,当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。
const 引用
const 引用是指向const 对象的引用:
const int ival = 1024;
const int &refVal = ival; //ok
int &ref2 = ival; //error
const 引用是指向const 对象的引用,非const引用是指向非const类型的引用。
非const引用只能绑定到与该引用同类型的对象。
3、typedef名字
typedef用来定义类型的同义词:
typedef double wage;
wage hourly, weekly;
4、枚举
枚举为某些属性定义一组值。枚举的定义包括enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员列表。
enum openModes {input, output, append}; //input=0, output=1, append=2
默认地,第一个枚举成员赋值为0,后面的每个成员比前面的大1。
每个枚举成员都是常量,可以为一个或多个成员赋值。
enum Forms {shape=1, sphere, cylinder, polygon}; // sphere=2, cylinder=3, polygon=4
enum Points {point2d=2, point2w, point3d=3, point3w} //point2w=3, point3d=3, point3w=4
不可以改变枚举成员的值,枚举成员本身是一个常量表达式。
5、类类型
以class关键字开始,其后是该类的名字标识符。类体位于花括号内,花括号外必须有分号。
class Sales_item
{
public:
private:
string isbn;
unsigned units_sold;
double revenue;
};
定义变量和定义类中的数据成员区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时只能指定数据成员的类型和名字。类不是在定义时初始化数据成员,而是通过构造函数。
访问标号:public部分定义的成员可以在程序的任何地方访问
private部分定义的成员只可以在类内部使用
如果使用class关键字来定义类,那么定义在第一个访问标号前的成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public。
6、编写自己的头文件
C++支持分别编译,这样程序可以由多个文件组成。可以将类的定义放在一个头文件中,类的成员函数放在一个源文件中,像main这样使用类对象的函数放在另一个源文件中。任何使用该类的源文件都必须包含定义该类的头文件。
头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、extern变量的声明和函数的声明。
头文件用于声明而不是用来定义。
头文件不应该包含定义这一规则有三个例外:类的定义、值在编译时就已经知道的const对象和inline函数。