我有一个关于使用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
。我正在阅读的文本似乎表明有问题的两行标有注释// Line in Question
应该const
在时间前面有关键字。也就是说,函数返回对 Time 对象常量的引用。我不明白为什么这是真的(或者这是有意义的情况),因为我们正在修改 Date 的数据成员。
const
在行首标记关键字的目的是// Line in Question
什么?
谢谢。