return *this
C++のステートメントを使用したカスケードについて質問があります。教科書を読んでいて、完全に理解していないカスケードの使用法に出くわしました。
次のコードは、私自身の構成です。
#include <iostream>
using namespace std;
class Time
{
public:
Time( int = 0, int = 0 );
Time & setHour( int );
void print( void );
Time & operator+=( int ); // Line in Question
private:
int hour;
int minute;
};
Time::Time(int hr, int mn)
{
hour = hr;
minute = mn;
}
Time & Time::operator+=(int increment) // Line in Question
{
hour += increment;
return *this;
}
Time & Time::setHour(int h)
{
hour = h;
return *this;
}
void Time::print( void )
{
cout << "hour = " << hour << endl;
cout << "minute = " << minute << endl;
}
int main()
{
cout << "Hello, world!" << endl;
Time t;
(t+=3)+=4;
t.print();
int x = 4;
(x+=4)+=5;
cout << x << endl;
}
+=
整数変数を使用して「カスケード」するのと同じ意味で、演算子を「カスケード」できることに注意してくださいx
。私が読んでいるテキストは、コメントでマークされた問題の 2 行が Time の前に// Line in Question
キーワードを持つべきであることを示唆しているようです。const
つまり、関数は Time オブジェクト定数への参照を返します。Date のデータ メンバーを変更しているため、なぜこれが正しいのか (またはこれが理にかなっている場合) がわかりません。
const
マークされた行の先頭にキーワードを配置する目的は何// Line in Question
ですか?
ありがとう。