变量和基本类型
四、const限定符
[cpp] view plaincopyprint?
- #include <iostream>
- int main()
- {
- //for循环语句存在两个问题
- for (int index = 0;index != 512; ++index)
- {
- //...
- }
- return 0;
- }
- /*
- *1、程序的可读性:存在魔数512[魔数:他的意义在上下文中并没有体现出来,好像这个数是魔术般变出来的]
- *2、程序的可维护性...
- */
#include <iostream> int main() { //for循环语句存在两个问题 for (int index = 0;index != 512; ++index) { //... } return 0; } /* *1、程序的可读性:存在魔数512[魔数:他的意义在上下文中并没有体现出来,好像这个数是魔术般变出来的] *2、程序的可维护性... */
1、定义const对象
[cpp] view plaincopyprint?
- //bufSize此时是一个左值,但是现在这个左值不可修改!
- const int bufSize = 512;
//bufSize此时是一个左值,但是现在这个左值不可修改! const int bufSize = 512;
因为常量在定义之后就不能修改,所以定义时就必须初始化!
2、const对象默认为文件的局部变量
除非特殊说明,在全局作用域中声明的const变量是定义该对象的文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问!
如若想被其他文件访问,需要在const前加extern关键字!
[cpp] view plaincopyprint?
- //file_1.cc
- extern const int bufSize = 512;
- //file_2.cc
- extern const int bufSize;
- for (int index = 0;index != bufSize; ++index)
- {
- //...
- }
//file_1.cc extern const int bufSize = 512; //file_2.cc extern const int bufSize; for (int index = 0;index != bufSize; ++index) { //... }
【说明:】非const对象默认为extern。而const对象默认为非extern,要使const变量能够在其他的文件中访问,必须显式指定它为extern。
P50
[cpp] view plaincopyprint?
- //习题2.23(b)下列语句是否正确
- int cnt = 0;
- const int sz = cnt;
//习题2.23(b)下列语句是否正确 int cnt = 0; const int sz = cnt;
五、引用
引用的主要作用是用作函数的形式参数。
1、下列语句是否正确
[cpp] view plaincopyprint?
- int ival = 1024; //正确
- int &refVal_1 = ival; //正确
- int &refVal_2 = refVal_1; //正确
- int &refVal_3; //错误
int ival = 1024; //正确 int &refVal_1 = ival; //正确 int &refVal_2 = refVal_1; //正确 int &refVal_3; //错误
2、当引用初始化之后,主要该引用存在,他就保持绑定到初始化时的对象,不能将引用绑定到另外一个对象!
初始化是指定引用指向哪个对象的唯一方法!
3、const引用[指向const对象的引用]
[cpp] view plaincopyprint?
- /*
- *仅仅允许const应用绑定到需要临时变量作为媒介来完成完全绑定过程的值
- *因为const引用是只读的,即:
- *非const引用只能绑定到与该引用相同类型的对象,
- *const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
- *理解下面程序:
- */
- int ival = 1024;
- const int &refVal_1 = 1024;
- const int &refVal_2 = ival;
- // int &refVal_3 = refVal_2;
- int i = 42;
- const int &r = 42;
- const int &r2 = r + i;
- double dval = 3.14;
- const int &refDval = dval; //如果int前的const去掉对不对呢?
/* *仅仅允许const应用绑定到需要临时变量作为媒介来完成完全绑定过程的值 *因为const引用是只读的,即: *非const引用只能绑定到与该引用相同类型的对象, *const引用则可以绑定到不同但相关的类型的对象或绑定到右值。 *理解下面程序: */ int ival = 1024; const int &refVal_1 = 1024; const int &refVal_2 = ival; // int &refVal_3 = refVal_2; int i = 42; const int &r = 42; const int &r2 = r + i; double dval = 3.14; const int &refDval = dval; //如果int前的const去掉对不对呢?
P52
[cpp] view plaincopyprint?
- //习题2.25,判断下列程序的输出结果
- #include <iostream>
- int main()
- {
- int ival = 2.01;
- int &rval2 = ival;
- const int &rval3 = 1;
- rval2 = rval3;
- ++ rval2;
- std::cout << rval3 << std::endl;
- return 0;
- }
//习题2.25,判断下列程序的输出结果 #include <iostream> int main() { int ival = 2.01; int &rval2 = ival; const int &rval3 = 1; rval2 = rval3; ++ rval2; std::cout << rval3 << std::endl; return 0; }
六、typedef
typedef用开定义类型的同义词
[cpp] view plaincopyprint?
- typedef double wages;
- typedef wages salary;
- //typedef定义以关键字typedef开始,后面是数据类型和标识符,标识符或类型名并没有引入新的类型,而至是现有的数据类型的同义词。
typedef double wages; typedef wages salary; //typedef定义以关键字typedef开始,后面是数据类型和标识符,标识符或类型名并没有引入新的类型,而至是现有的数据类型的同义词。
typedef通常被用于以下三种目的:
1、为了隐藏特定类型的实现,强调使用类型的目的
2、简化复杂的类型定义,使其更易理解
3、允许一种类型用于多个目的,同时使得,每次使用该类型的目的明确
时间: 2024-11-05 22:58:41