2009年10月5日 星期一

定義類別中的const成員函數

考慮下述的程式碼:

const Animal pig = Animal("Spot");
pig.eat();

通常編譯類似的程式碼時,編譯器會說明第二行會有錯誤,理由是因為eat()沒有任何引數不能保證不會修改呼叫他的物件,因為此物件是const不能被修改的,於是在c++的語法中就產生了一個新的語法就是在函數括號後放置關鍵字const,也就是說eat()的宣告應該如下:

void eat() const; //這樣宣告函數是告訴編譯器保證不會修改到呼叫他的物件

而函數的定義應該如下:

void Animal::eat() const

沒有留言: