您的位置:首页 > 编程语言 > C语言/C++

读书笔记:C++ Primer系列(4)—— 关于const限定符

2013-12-18 22:35 302 查看
题记:

请看下面一段程序:

for(int k=0;k!=100;k++)

{

..........

}

出现两个问题:

程序的可读性;

程序的可维护性;

首先,比较k与100有什么意义?为什么要跟100比较?100哪里来的?——100就像魔术般凭空冒出来一样,程这样的数为魔数(即:它的意义在上下文中没有体现出来)。

这样一来,导致程序的可读性比较差;

其次,如果此整个程序规模较大,100出现的次数上千上万次,假设要对其做修改,这样修改量绝对大啊!并且很容易出错,导致程序崩溃。这样一来,导致程序的可维护性较差。

解决这两个问题的方法是使用一个初始化为100的对象,即:

int max=100;

for(int k=0;k!=max;k++)

{

..........

}

这样,通过对象名称友好性解决了可读性差的问题;要作修改只需要修改max的值就可以,增强了程序的可维护性。

4.1 const限定符

从上面可以看出,通过定义一个变量来代表一个常数,这样会造成这个常数会被意外修改,而const关键字可以解决这样的问题。

const可以把一个对象转换成一个常量,如:

const int max=100;//定义max为常量并初始化为100,且max在随后不可更改

注:由于常量是不可更改的,定义时必须被初始化

const int i,j=100;//编译时出错,因为常量i未被初始化

在全局作用域中声明的const变量是该对象在该文件下的局部变量,只能被该文件使用,而不能被该程序的其他文件使用

注:

在全局作用域中声明的非const变量,可以被该程序的所有文件使用;

要使在全局作用域中声明的const变量被该程序的所有文件使用,可以指定const变量为extern。(即:非const变量默认为extern)

4.2 引用

牢记一点:引用就是对象的别名(俗称:小名),对引用的操作就是对对象的实际操作

如:

int res=5;

int &RRres=res;//这里定义了RRres是对象res的引用

注:引用必须初始化

如果有操作:RRres+=3;则有RRres的值为8,且res的值也为8

关于const引用

非const引用只能绑定到与该引用同类型的对象;

const引用可以绑定到不同但相关的类型的对象或绑定到右值

如:

int temp=4;

int &temp1=8;//错误非const不能绑定到右值,只能绑定到同类型的对象

const int &temp2=8;//正确

const int &temp3=temp+temp3;//正确
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: