C++函式後面加const修飾
阿新 • • 發佈:2019-02-08
給隱含的this指標加const,表示這個this指向的東西是const的,也就是說這個函式中無法改動資料成員了。const是一種保證,告訴你這個成員不會改變物件的狀態。
宣告一個成員函式的時候用const關鍵字是用來說明這個函式是 “只讀(read-only)”函式,也就是說明這個函式不會修改任何資料成員(object)。 為了宣告一個const成員函式, 把const關鍵字放在函式括號的後面。宣告和定義的時候都應該放const關鍵字。
任何不會修改資料成員的函式都應該宣告為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 #
return age;
}
void main()
{
temp a(22);
cout << "age= " << a.getAge() << endl;
}
因為聲明瞭const函式,所以不可以修改任何資料成員,但是在這裡給age資料成員加了10, 所以產生錯誤。