C++中const的使用简介

所谓常量是一个恒定不变的量,常量提供了C++程序设计中的安全性和可控性。常量用const标识,其一个作用是用来替代宏替换,const提供了对数值的严格的类型检查,相对于宏替换而言,const提供了强大的安全保障。

 

const通常用于修饰函数参数为指针和引用的情况,且只能修饰输入参数,如果输入参数采用值传递方式,由于在函数调用时将自动产生临时变量用于复制实参,原参数不会被修改,因此不需使用const进行修饰。

 

在函数体中按照cosnt所修饰的部分进行常量化,如果形参为const Type* parameter,则不能对传递进来的指针的内容进行修改,即该方式用于保护原指针所指向的内容,如果形参是const Type& parameter,则不能对传递进来的引用对象进行改变,即该对象保护了源对象。

 

建议对于非内部数据类型的输入参数,不要使用值传递方式,而使用“const 引用对象”传递方式,这样做是为了提高效率。而对于那些输入参数是内部数据类型的情况,则建议不要将“值传递”的方式修改为按“const 引用传递”方式。

 

下面介绍一点关于函数返回值是const类型的情况。

如果一个函数的返回值是常量,意味着原变量不能被修改,如果采用按值返回的方式,那么对于返回值是内部数据类型的情形,这种函数声明就是没有意义的。

如下所示:

int function0()

{return 0;}

 

const int function1()

{return 0;}

 

void main()

{

       const int a=function0();

       int b=function1();

}

编译和运行上述程序,可以看出,对于内部数据而言,按值返回是否是一个cosnt没有任何影响,因为这种函数声明是没有任何意义的,所以不建议使用这种情况。对于非内部数据类型,情况就不一样了,如果按函数返回一个类对象const常量,那么这个返回值将被保护,也就是说,这个返回值不能作为左值来使用。

 

const可以用于类成员函数的声明,如下:

void function() const{}

被修饰的成员函数将无法对成员变量进行修改,如果发生修改成员变量的语句,那么将会编译出错,大大的提高了程序的健壮性。

你可能感兴趣的:(C++中const的使用简介)