C++函数后面的const,可以从下面两个方面进行理解:
- 申明一个成员函数的时候用const关键字是用来说明这个函数是 “只读(read-only)”函数,也就是说明这个函数不会修改任何数据成员,除非成员加了修改mutable或者你在函数中主动使用了const_cast!
- 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。
下面看具体的示例:
#include<iostream> using namespace std; class temp { public: temp(int age); int getAge() const; void setNum(int num); private: int age; }; temp::temp(int age) { this->age = age; } int temp::getAge() const { age+=10; // #Error...error C2166: l-value specifies const object # // 1> 如果前面的成员定义int age 改为mutable int age;就可以编译通过 // 2> 也可以使用const_cast强行删除const属性。 const_cast<temp *>(this)->age += 10; return age; } void main() { temp a(22); cout << "age= " << a.getAge() << endl; }