常量对象和常量成员函数
一、常量对象
如果希望某个对象的值初始化后就再也不被改变,则定义该对象时可以在前面加const关键字,使之成为常量对象。
class CDemo { private: int value; public: void SetValue(){} }; const Demo Obj;//常量对象 Obj.SetValue();//wrong
常量对象一旦初始化后,其值就再也不能改变,但是可以通过常量对象调用常量成员函数。
二、常量成员函数
常量成员函数,就是在定义时加了const关键字的成员函数(声明时也要加)
常量成员函数执行期间不应该修改其所作用的对象。因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)。
#include<iostream> using namespace std; class Sample { public: void GetValue() const; }; void Sample::GetValue() const { } int main() { const Sample o; o.GetValue();//常量对象上可以执行常量成员函数 return 0;
两个函数,名字和参数表都一样,但是一个是const,一个不是,算重载。
#include <iostream> using namespace std; class CTest { private : int n; public: CTest() { n = 1 ; } int GetValue() const { return n ; } int GetValue() { return 2 * n ; } }; int main() { const CTest objTest1; CTest objTest2; cout << objTest1.GetValue() << "," << objTest2.GetValue() ; return 0; }