C++常量对象、常量成员函数和常引用
图:广州塔
Guderian出品
本文整理自《北京大学公开课:C++面向对象程序设计》常量对象
如果不希望某个对象的值被改变,则定义该对象的时候可在前面加const
关键字。
1 | class CDemo |
常量成员函数
在类的成员函数说明后面可以加const
关键字,则该成员函数成为常量成员函数。
常量成员函数执行期间不应该修改其所作用的对象。因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)。
非常亮成员函数在执行的过程中是有可能修改掉常量成员函数中的值的。
1 | class Sample |
常量成员函数的重载
两个成员函数,名字和参数表都一样,但是一个是const
,一个不是,算重载,而不是重复定义。
1 | class CTest |
常引用
引用前面可以加const
关键字,成为常引用。不能通过常引用,修改其引用的变量。
1 | const int &r = n; |
对象作为函数的参数时,生成该参数需要调用复制构造函数,效率比较低。用指针作参数,代码又不好看,如何解决?可以用对象的引用作为参数。
1 | class Sample |
但对象引用作为函数参数有一定风险性,若函数中不小心修改了形参o
,则实参也跟着变,这不是我想要的。如何避免?使用常引用!
1 | class Sample |
这样函数中就能确保不会出现无意中更改o
值的语句了。
参考并整理自《C++面向对象设计》郭炜,北京大学,感谢原作者!编辑时有删改