Geekband Week a 第一周作業(yè)遇到的問(wèn)題1
本人剛接觸C++,下面是寫(xiě)本周作業(yè)遇到的一些問(wèn)題。作為自己的記錄,也歡迎指正和討論。
本周作業(yè)遇到的問(wèn)題:
1.成員函數(shù)與帶參內(nèi)聯(lián)函數(shù)的混淆:
class date
{
public:
date (int y = 0,int m = 0, int d = 0)
: year(y) , month(m) , day(d)
{ }
int get_year() const {return year;}
private:
int year , month , day;
};
inline int
get_year(const date& x)
{
return x.get_year();
}
如以上部分,定義date類(lèi)后,在classbody內(nèi)定義了get_year()函數(shù),最初在操作符'>'函數(shù)內(nèi)直接引用了get_year()函數(shù),導(dǎo)致報(bào)錯(cuò)。
明確了成員函數(shù)自帶this型指針以及成員函數(shù)的調(diào)用方式之后,在class body外定義了內(nèi)聯(lián)函數(shù)get_year(date& x) ,該函數(shù)以類(lèi)date的引用為參數(shù),作用域?yàn)槿颉?/p>
2.this指針作為參數(shù)對(duì)類(lèi)的data的訪問(wèn)方式:
既然在成員函數(shù)自帶this指針參數(shù),并指向調(diào)用該函數(shù)的類(lèi)本身,那么對(duì)訪問(wèn)data的方式以下兩種訪問(wèn)方式,哪一個(gè)更快呢?
inline bool
date::operator > (const date& x)
{
int i = 0;
if (year > x.year)
// 1、直接訪問(wèn)data,與在class body內(nèi)部書(shū)寫(xiě)成員函數(shù)一樣
i = 1;
else if((this->year == x.year) && (this->get_month() > x.month))
i = 1; // 2、this指針訪問(wèn)data
else if((this->year == x.year)&& this->get_month() == x.month&&(this->get_day() > x.day))
i = 1;
return i;
}
3.在classbody外定義常量成員函數(shù)的方法:
在函數(shù)聲明后、分號(hào)前加 const
class date
{
public:
date (int y = 0,int m = 0, int d = 0) : year(y) , month(m) , day(d)
{ }
int get_year()const;
private:
int year , month , day;
};
inline int
date::get_year()const
{
return year;//get_year();
}