1. 程式人生 > >類中的常成員函式的使用和定義

類中的常成員函式的使用和定義

如果只對物件進行讀操作,則該成員函式可以設計成常成員函式。設計成常成員函式的好處是:讓使用者一目瞭然地知道該成員函式不會改變物件的值

常成員函式的宣告和定義在形式上必須一致,即在函式形參列表的右括號後面加上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