const还可以用来修饰方法,不过const就不是像static那样放在函数的前面了,
因为放在前面的const已经有意义了,是指函数的返回值是const的。这样只能放在函数的最后了。
例如:
- int get( ) const;
有什么作用呢。他的意思就是这个方法不能修改类成员变量的值。
例如
- class human
- {
- private:
- int m_gender;
- int m_age;
- public:
- human():m_gender(0),m_age(0)
- {
- }
- int getAge1( ) const
- {
- m_age = 20;//错误,试图在const方法中修改类成员变量
- m_gender = 1;//错误,试图在const方法中修改类成员变量
- return m_age;
- }
- int getAge2( )
- {
- m_gender = 1;//正确
- m_age = 20;//正确
- return m_age;
- }
- };
如果我们定义一个const的human对象。那么我们使用这个const的对象的方法时只能使用被const修饰的
方法。
- const human a;
- a.getAge1();//正确
- a.getAge2();//错误
有的同学有疑问了,如果类中有的值是需要在const时改变的怎么办。
C++此时又引入了一个很好的关键字mutable
- class human
- {
- private:
- int m_gender;
- mutable int m_age;
- public:
- human():m_gender(0),m_age(0)
- {
- }
- int getAge1( ) const
- {
- m_age = 20;//正确。使用了mutable关键字
- m_gender = 1;//错误,试图在const方法中修改类成员变量
- return _age;
- }
- int getAge2( )
- {
- m_gender = 1;//正确
- m_age = 20;//正确
- return m_age;
- }
- };