最近在公司使用C++做项目,对工作中发现的问题进行总结!
大家都知道,C++的const关键字是申明一个常量,以前没有深入接触C++的时候也没觉得有什么特别的用法。
下面说说我最近工作中发现的关于const的一些使用惯例,我这里所说的使用惯例,是指C++编码中推荐的做法。
1)函数中的const参数
我们可能会看到类似这样的一个函数声明:
void copy(const string& strDestination, const string& strSource);
上面的函数实现将字符串strDestination拷贝到strSource的功能。
有人说我不用const修饰参数也可以呀,没有什么大不了的。
但是在实践中,如果类成员函数不修改其参数的值,且参数类型为指针、引用或者数组的时候,我们一般都会将其参数声明为const。
这样做有什么好处呢?好处就是如果形参是const类型的话,我传递给函数的实参是const类型或者非const类型的都可以。
如果你的程序中形参是非const类型,但是你要传递一个const类型的实参过去,是编译不过的。你必须使用const_cast关键字转化,或者声明一个非const的同类型变量。
2)const函数
我们可能见过这样的函数申明:
void fun() const
在函数的后面加一个const就是const函数,这说明该成员函数不会修改类成员变量的值。
这样做有什么好处呢?如果这个函数不声明为const函数,那该方法只有非const对象能够调用,const对象是不能调用的。
所以在实践中,如果成员函数不修改成员变量,我们一边将该函数声明为const函数。
总之,需要知道的是C++中同一类型加上const和不加const是不同的类型!