C++中const的作用
1、const用于定义常量。
C语言: #define 常量名 常量值
C++: const 类型 常量名=常量;
(1)常量一经定义就不能修改,例如:
const int i = 5; // 定义常量i
i =10; // 错误,修改常量
i++; // 错误,修改常量
(2)const常量必须在定义时初始化,例如:
const int n; //错误,常量n未被初始化
2、const用于限定指针或限定指向的内容。
(1)指向常量的指针:所指内容为常量,指针为变量(const放在内容类型前)
例如:
const char*p=“good”; //const在char之前,表示指针指向的字符为常量,
//不允许通过该指针来修改指向的字符
*(p+2)=‘l’; //错误,所指对象为常量
p=“very”; //正确,指针为变量
再例如:
int i=5;
const int*p=&i;
*p=6; //错误,所指对象为常量
i=6; //正确,指针为变量
(2)指针常量:指针为常量,指向内容为变量( const放在指针前)
例如:
char* const p=“good”; //指针名前加const,表示指针本身是常量
p=“very”; //错误
*(p+2)=‘l’; //正确
(3)指向常量的常量指针:指针为常量,指向内容也为常量(const加到内容类型前,也放到指针前)
例如:
const char * const p=“good”; // const指针前(指针为常量),
// const加到内容类型前(内容为常量)
p=“very”; //错误,指针为常量
*(p+2)=‘l’; //错误,内容为常理
3、const在类定义中的使用。
class Complex
{
public:
Complex(intr=0,int i=0);
voiddisplay()const;
Complex add(const1 Complex &c)const2; //两复数相加
private:
intreal;
intimag;
};
前一个const修饰复数表示对象c为常量,即c的数据成员不允许修改
如:c.real=10;//错误
后一个const修改函数add表示在该函数中,禁止修改当前对象的数据成员。
如: real=10;//错误