1 定義
const成員函數(常成員函數):成員函數()後加上const,如:void print()const。
2 目的
如果一個成員函數不對對象的任何成員資料的進行修改(最常見的為列印成員資訊的函數),那麼我們可以将這個成員函數設定為const函數,以保護對象資料。 如果在該函數裡面修改對象的成員資料,則編譯器就會報錯。
3 用法
我們通常将 get 函數設定為常成員函數。讀取成員變量的函數的名字通常以
get
開頭,後跟成員變量的名字,是以通常将它們稱為 get 函數。
請看下面的例子:
//student.h 頭檔案
class Student
{
public:
Student(char *name, int age, float score);
void show();
//聲明常成員函數
char *getname() const;
int getage() const;
float getscore() const;
private:
char *m_name;
int m_age;
float m_score;
};
//student.cpp 源檔案
Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score)
{ }
void Student::show()
{
cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<endl;
}
//定義常成員函數
char * Student::getname() const
{
return m_name;
}
int Student::getage() const
{
return m_age;
}
float Student::getscore() const
{
return m_score;
}
特别提醒:必須在成員函數的聲明和定義處同時加上 const 關鍵字。
char *getname() const
和
char *getname()
是兩個不同的函數原型,如果隻在一個地方加 const 會導緻聲明和定義處的函數原型沖突。