類中的常成員函式的使用和定義
阿新 • • 發佈:2019-02-15
如果只對物件進行讀操作,則該成員函式可以設計成常成員函式。設計成常成員函式的好處是:讓使用者一目瞭然地知道該成員函式不會改變物件的值。
常成員函式的宣告和定義在形式上必須一致,即在函式形參列表的右括號後面加上const。
//---------main.cpp------------ #include <iostream> using namespace std; class Date { public: int year,month,day; public: void set(int y,int m ,int d) { year = y; month = m; day = d; } bool isLeapYeay()const; void print()const; }; bool Date::isLeapYeay()const { return (((year%4 == 0)&&(year%100 != 0))||(year%400 ==0)); } inline void Date::print()const { std::cout<<year<<"/"<<month<<"/"<<day<<" is a leap year!"<<endl; } int main(int argc,char **argv) { //-----------------物件---------------- Date s; s.set(2015,9,25); if(s.isLeapYeay()) s.print(); else std::cout<<s.year<<"/"<<s.month<<"/"<<s.day<<" is not a leap year!"<<endl; return 0; }
其中set成員函式因為要修改物件值,所以無法設計成const。這樣,只有s.set(xxxx,xx,xx);的行為會改變物件的值,而s.isLeapYear()的操作肯定不會改變物件的值。否則編譯不通過。
1