3.8 常量
和变量相似,常量是具名的数据存储位置。但和变量不同,常量值在常量声明后不可更改。创建时必须初始化好,之后不能被赋予新值。C++有两种常量:字面值(literal)“和符号值(symbolic)。字面值直接在代码中输入。
符号常量是用一个名称来代表的常量。定义方式和变量一样,但限定符必须以关键字const开头,而且必须初始化。一经声明,在能使用该类型的变量的任何地方,都可以使用该常量名称,如下所示:
const unsigned long noOfFullTimeEmployees = 49;
const unsigned long noOfPartTimeEmployees = 234;
与字面值常量相比,符号常量有以下两个好处。
1:符号名称增强了可读性。例如,符号常量 noOfFullTimeEmployees(全职员工数量)就比字面值49更容易理解。
2:符号常量可统一更改,这比到处寻找字面值并进行更改容易多了。
3.9 typedef
任何typedef都是用户自己为现有类型定义的同义词。要创建类型的同义词,需要使用关键字typedef,后跟类型名称和要定义的新名称。由于typedef是C++语句,所以必须以分号结尾:
typedef unsigned int positiveNumber;
该typedef 将 positiveNumber声明为unsigned int 的同义词,可在声明中用于代替实际的类型名称:
比如
positiveNumber a,b;
3.10 .NET Framework 的 String类
String类不是像int或 long那样的内建类型;它是.NET Framework的一部分。由于String不是内建类型,所以要在项目中包含一些文件,编译器才允许使用它。为了使用String,要在源代码文件顶部添加下面这一行语句:
using namespace System;
它的作用是方便你使用特定的.NET类。由于String 在 System命名空间中,所以全名是System::String,但像这样的using namespace 语句允许直接使用名称而不进行限定。
注:String对象初始化好之后就不可变(immutable)了。String类的一些成员函数(比如Insert和Replace)表面上能修改字符串,但实际是返回一个新String对象,其中包含修改好的内容。如需反复修改字符串,应该使用StringBuilder类(添加 using namespace System: :Text;来使用)。