0%

C++之常量

在C++中, 常量使用关键字const标识, 常量保证了程序的安全性和可控性. const提供了严格的类型检查, 因此相遇于宏替换而言const更加安全.

可以用一句话概括当const和指针同时出现时的语义规则, 即如果const位于*的左侧, 则const修饰的就是指针所指向的变量, 即指针所指向的是一个常量; 反之, 如果const位于*的右侧,那么const修饰的就是指针本身, 即指针本身是常量.

下面是const与指针结合时的一些代码示例:

int num = 500;
const int* a = #			//1
int const *a = #			//2
int* const a = #			//3
const int* const a = #  	//4

根据上面的原则, 语句1和语句2的作用是相同的, 都表示指针所指向的内容为常量, 也就是不能使用*a=250之类的语句修改指针指向的值.

语句3表明指针本身是常量, 而指针所指向的内容不是常量. 这种情况下不能对指针本身进行操作, 例如a--.语句4表明表明指针本身和指针所指向的内容都是常量.

上文所讨论的内容都是关于使用const来修饰变量的, 在函数声明中const的作用更大. 通常const可以用来修饰函数的返回值或某个参数. 另外, 对于成员函数, const还可以用来修饰整个函数.

使用const修饰函数参数仅适用于函数参数为指针或引用的情况, 其一般形式如下:

类型名 func(const Type* parameter)
或
类型名 func(const Type& parameter)

使用const修饰函数返回值表明返回值不能被修改, 其一般形式如下:

const Type func(参数表)	

使用const修饰成员函数表明被修饰的成员函数不能对成员变量进行修改,其一般形式如下:

void func() const