C++ const用法详解
我们知道,在程序运行时不会更改的值可以作为常数存储。但是,有时这种做法并不是很理想。例如,假设以下语句出现在计算有关贷款数据的银行程序中:
如果在整个程序中还有其他的计算公式也使用了此数字,并且必须定期更改,则会出现第二个问题。假设这个数字是利率,那么如果利率从 6.9% 变为 7.2% 该怎么办呢?程序员将不得不搜索全部源代码,以查找每一次出现的该数字。
通过使用命名常量可以解决这两个问题。命名常量也称为常量变量,就像是一个变量,但其内容是只读的,在程序运行时不能更改。以下是一个命名常量的定义:
命名常量可以有任何合法的 C++ 标识符名称,但是许多程序员会在其名称中全部使用大写字母,将其与常规变量区分开来。上述示例中的 INTERESTJRATE 正是如此。
在定义一个命名常量时,必须用一个值来进行初始化。它不能先定义,然后再通过赋值语句来进行赋值:
这种方法的另一个优点是可以很容易地对程序进行广泛的改变。例如,假设整个程序在十几个不同语句中均出现过利率,这时要修改利率,则只要修改命名常量定义中的初始化值就可以了,这也是唯一需要修改的地方。如果利率上升到 7.2%,则可以简单地将定义修改如下:
命名常量也可以帮助防止程序代码中的键入错误。例如,假设在执行各种几何计算的程序中使用数字 3.14159 作为 PI 的值。每次在程序代码中输入数字 3.14159 时,都可能会出现一个或多个数字的错误。为了帮助防止这种错误,可以为 PI 定义一个命名常量,使用正确的值初始化,然后在需要其值的所有公式中使用该常量。
下面的程序在计算圆面积时就使用了命名常量。它在第 9 行定义了 PI 常量,然后在第 17 行使用了它:
amount = balance * 0.069;
在这个程序中,出现了两个潜在的问题。首先,除原始程序员以外的任何人都不清楚这个 0.069 是什么东西。它看起来似乎是一个利率,但在某些情况下,又可以是与贷款支付相关的费用。如果不仔细检查程序的其余部分,怎样才能确定该语句的目的呢?如果在整个程序中还有其他的计算公式也使用了此数字,并且必须定期更改,则会出现第二个问题。假设这个数字是利率,那么如果利率从 6.9% 变为 7.2% 该怎么办呢?程序员将不得不搜索全部源代码,以查找每一次出现的该数字。
通过使用命名常量可以解决这两个问题。命名常量也称为常量变量,就像是一个变量,但其内容是只读的,在程序运行时不能更改。以下是一个命名常量的定义:
const double INTEREST_RATE = 0.069;
除了 const 出现在数据类型名称之前,它看起来就像一个常规的变量定义。关键字 const 是一个限定符,它告诉编译器将该变量设置为只读。这样可以确保在整个程序执行过程中其值保持不变。如果程序中的任何语句尝试更改其值,则在编译程序时会导致错误。命名常量可以有任何合法的 C++ 标识符名称,但是许多程序员会在其名称中全部使用大写字母,将其与常规变量区分开来。上述示例中的 INTERESTJRATE 正是如此。
在定义一个命名常量时,必须用一个值来进行初始化。它不能先定义,然后再通过赋值语句来进行赋值:
const double INTEREST_RATE; //非法
INTEREST_RATE = 0.069; //非法
newAmount = balance * 0.069;
就可以改为以下语句:newAmount = balance * INTEREST_RATE;
现在新程序员可以轻松阅读第2个语句并更好地理解其中含义。显然,与 balance 变量相乘的正是利率。这种方法的另一个优点是可以很容易地对程序进行广泛的改变。例如,假设整个程序在十几个不同语句中均出现过利率,这时要修改利率,则只要修改命名常量定义中的初始化值就可以了,这也是唯一需要修改的地方。如果利率上升到 7.2%,则可以简单地将定义修改如下:
const double INTEREST_RATE = 0.072;
然后该程序就可以重新编译。每个使用 INTEREST_RATE 的语句都将使用新值。命名常量也可以帮助防止程序代码中的键入错误。例如,假设在执行各种几何计算的程序中使用数字 3.14159 作为 PI 的值。每次在程序代码中输入数字 3.14159 时,都可能会出现一个或多个数字的错误。为了帮助防止这种错误,可以为 PI 定义一个命名常量,使用正确的值初始化,然后在需要其值的所有公式中使用该常量。
下面的程序在计算圆面积时就使用了命名常量。它在第 9 行定义了 PI 常量,然后在第 17 行使用了它:
//This program calculates the area of a circle. The formula for the // area of a circle is PI times the radius squared. PI is 3.14159. #include <iostream> #include <cmath> // Needed for the pow function using namespace std; int main() { const double PI = 3.14159; // PI is a named constant double area, radius; cout << "This program calculates the area of a circle.\n"; // Get the radius cout << "What is the radius of the circle? "; cin >> radius; // Compute and display the area area = PI * pow(radius, 2); cout << "The area is " << area << endl; return 0; }程序输出结果:
This program calculates the area of a circle.
What is the radius of the circle? 10.0
The area is 314.159
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算