一、知识点
1、基本内置类型(算术类型和void类型)
2、字面值常量和变量
3、const限定符
4、引用
5、typedef名字
6、枚举
7、类类型
8、头文件
二、要点
1、const限定符
魔数:在上下文中没有体现出来,好像这个数是魔术般的从空中出现的。如下面的“512”这个数
for (int i = 0; i != 512; ++i) {
//..
}
使用const限定符需注意:
(1)、定义的const的变量仍难是一个左值,但是这个左值是不可修改的;且在定义时必须初始化;
(2)、const变量默认都是文件局部的,如果想被其他文件访问,必须在前面加入extern。如:
file_1.cpp:
extern const int bufszie = 512; // 定义,需要赋初值
fiel_2.cpp:
extern const int bufsize;
.
for (int i = 0; i != bufsize; ++i) {
//.
}
2、引用
引用(reference)就是对象的另一个名称;非congst引用只能绑定到与该引用相同类型的对方上,const引用可以绑定到不同但相关的类型对象或绑定到右值。
重点:const引用,指向const对象的引用。
1、赋值
const int ival = 1024;
const int &refVal = ival; // 这个是正确的赋值
int &ref2 = ival; // 这个是错误的赋值(ref2是可以重新赋值,这样导致ival的值会被改变,但ival是const的,所以这样赋值是不允许的)
2、初始化
double dval = 42.12;
const int &r1 = 42; // 用右值(字面值常量)初始化
const int &r2 = dval; // 用不同那个类型的对象初始化,这里的r2 = 42。如果r2不是const的话,这样初始化是错误的。
3、typedef
typedef可以用来定义类型的同义词。格式为:typedef + 数据类型 + 标识符。
4、枚举(enum)
格式:enum enumName(l可选) {enumerator1, enumerator2,...}
(1)、枚举成员都是常量表达式(在编译器编译是就能计算出结果的整型表达式,或整型字面值常量);
(2)、默认的第一个枚举成员是0,后面的每个枚举成员都比前一个大1;
(3)、枚举成员值不是唯一的:enum Points { p1 = 1, p2, p3 = 2, p4},这其中p1=1,p2=2,p3=2,p4=3;
(4)、枚举类型的对象初始化或赋值时,只能通过该类型枚举的某个成员进行。
5、类类型
注意class和struct的区别:唯一区别,默认情况下,struct的成员为public,class的成员为private。
6、头文件
在const变量是用常量表达式初始化时,可以将它定义在头文件中;如果不是,则不应该在头文件中定义。