C++语言中,const类型限定符用于限定某标识符在定义域范围内为常量,所限定的常量、函数参数等成为只读的,不能被修改。
在C语言编程序时,通常用宏来定义常量,如
#define MaxSize 100;
用C++语言编程序时,通常用const来定义常量,如
const int maxSize = 100;
const的用途主要有以下四点:
1: 当const类型说明符用于说明变量时,其作用是冻结所定义的变量在定义域范围内为常量。C++要求用const说明的变量必须在定义时初始化赋值,以后不允许再有赋值操作。
A: const说明的常量和同类型的变量具有单向兼容性。即,const说明的常量可赋给变量,但反之则不允许。如:
void main(void)
{
int x = 4; // 定义为变量
const int y = 5; // 定义为常量
?
x = y; // 给变量x赋值合法
//y = x; // 给常量y赋值出错
}
B: const说明的形参可被同类型的非const实参初始化。
#include <iostream.h>
void F1(const int x)
{
cout << x << endl;
}
void F2( int x)
{
cout << x << endl;
}
void main(void)
{
const int y = 20;
int x = 5;
F1(x); // 合法
F2(y); // 亦合法
}
2: 当const类型说明符用于说明指针类型变量时,有三种情况:
A: 冻结所定义的指针变量所指向的数据. 如:const int *p1 = &x; // 定义指针所指向的量为常量,
p1 = &y; // 修改指针地址操作合法
*p1 = 4; // 修改指针地址内的值操作非法
B: 冻结指针的地址值 如:int * const p2 = &x; // 定义指针自身为常量
p2 = &y; // 修改指针地址操作非法
*p2 = 3; // 修改指针地址内的值操作合法
C: 冻结指针变量所指向的数据和指针的地址值。如:const int * const p3 = &x; // 指针所指向的量和指针自身为常量
p3 = &y; //修改指针地址操作非法
*p3 = 3; // 修改指针地址内的值操作非法
3:当const类型说明符用于函数的形式参数时,其作用是冻结实际参数在该函数内为常量,即该参数不允许在函数内被修改。形参可以是const
int x或const int &rx。
4:当const类型说明符用于类的成员函数时,其作用是不允许该成员函数修改对象的数据成员。
常量必须在定义时就初始化