Geekband Week aの最初の週の作業で発生した問題
1577 ワード
Geekband Week aの最初の週の作業で発生した問題1
今週の作業で発生した問題:
1.メンバー関数とパラメトリックインライン関数の混同:
上記のセクションのようにdateクラスを定義するとclassbody内でget_が定義されますyear()関数は、最初にオペレータ'>'関数内でget_を直接参照しました.year()関数は、エラーを発生させます.メンバー関数にthis型ポインタとメンバー関数を持つ呼び出し方法を明確にした後、class bodyの外でインライン関数get_を定義した.year(date&x)は、クラスdateの参照をパラメータとし、役割ドメインが全域である.
2.thisポインタがパラメータとしてクラスのdataにアクセスする方法:
メンバー関数にthisポインタパラメータを持参し、その関数を呼び出すクラス自体を指す以上、dataへのアクセス方法は次の2つのアクセス方法のうち、どちらが速いですか?
3.classbody以外で定数メンバー関数を定義する方法:関数宣言後、セミコロン前にconstを付ける
C++, 。 , 。
今週の作業で発生した問題:
1.メンバー関数とパラメトリックインライン関数の混同:
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クラスを定義するとclassbody内でget_が定義されますyear()関数は、最初にオペレータ'>'関数内でget_を直接参照しました.year()関数は、エラーを発生させます.メンバー関数にthis型ポインタとメンバー関数を持つ呼び出し方法を明確にした後、class bodyの外でインライン関数get_を定義した.year(date&x)は、クラスdateの参照をパラメータとし、役割ドメインが全域である.
2.thisポインタがパラメータとしてクラスのdataにアクセスする方法:
メンバー関数にthisポインタパラメータを持参し、その関数を呼び出すクラス自体を指す以上、dataへのアクセス方法は次の2つのアクセス方法のうち、どちらが速いですか?
inline bool
date::operator > (const date& x)
{
int i = 0;
if (year > x.year)
// 1、 data, class body
i = 1;
else if((this->year == x.year) && (this->get_month() > x.month))
i = 1; // 2、this data
else if((this->year == x.year)&& this->get_month() == x.month&&(this->get_day() > x.day))
i = 1;
return i;
}
3.classbody以外で定数メンバー関数を定義する方法:関数宣言後、セミコロン前に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();
}