1. 命名常量
使用 const 修饰符声明的变量通常称为“ 已声明常量 ”, 其通常全部大写,这已经是一项约定俗成的标准了。
例如:const double PI = 3.1415;
2. 参数修饰符
const修饰的函数形参,表明该形参不能在函数体内更改,称为常量形参。参数修饰符const适用于任何类型的参数,但是它通常用于修饰数组参数和类的传引用调用参数。既然是数组参数和传引用调用参数了又何必用const修饰呢?这两者之间岂不是矛盾了??
从效率上说,“ 传引用调用 ” 参数要优于 ‘ 传值调用 “ 参数。传值调用参数是一个局部变量,它被初始化成为它的实参值,所以在调用函数时,就会存在参数值的两个副本。使用传引用调用参数,形参只是一个占位符,它会被实参值取代,所以只存在参数值的一个副本。对于简单数据类型( int, char, double等 )的参数,这种效率上的差异可忽略不计。但是对于类参数来说,两者在效率上的区别有时就非常明显了,必须重视。因此,对于一个类来说,有必要使用一个传引用调用参数,即使函数不会对参数进行更改。如果使用的是一个传引用调用参数,且函数不应该更改参数的值,就要为参数做上 “ 常量参数 ” 的标记——在参数类型前添加修饰符 const。因此,对于数据量大的类参数,为了提高效率我们通常使用传引用调用参数,若这个参数不能在函数体内改变,就应该用const修饰符标注它;同理对于行为与传引用调用参数极为相似的数组参数,为了避免其在函数体内被改变,我们也应该用 const 修饰它。(注:关于数组作为函数参数的说明请见:http://blog.youkuaiyun.com/huahuaxia/article/details/7873298 )
3. 修饰成员函数
一个对象是很有可能被其调用的成员函数更改的。若成员函数不应该更改调用对象,就要用 const 修饰符来标记这个函数。修饰符 const 要求同时用于函数声明和函数定义中,其位置在函数头的后面,用空格将其与函数头隔开。例如:
class A_Class
{
public:
void print() const;
...
};
void A_Class :: print() const
{
...
}