我有一個問題,類似於在這裏問的問題:How does "this" cascading work?返回*此,試圖級聯,並沒有返回參考
假設我有以下代碼:
#include <iostream>
using namespace std;
class Time
{
public:
Time(int = 0, int = 0, int = 0);
Time setHour(int);
Time setMinute(int);
void print(void);
private:
int hour;
int minute;
};
Time::Time(int hr, int mn, int sc)
{
hour = hr;
minute = mn;
}
void Time::print(void)
{
cout << "hour = " << hour << endl;
cout << "minute = " << minute << endl;
}
Time Time::setHour(int h)
{
hour = (h >= 0 && h < 24) ? h : 0;
return *this;
}
Time Time::setMinute(int m)
{
minute = (m >= 0 && m < 60) ? m : 0;
return *this;
}
int main()
{
cout << "Hello, world!" << endl;
Time t;
t.setHour(10).setMinute(25);
t.print();
}
然後很明顯,函數setMinute(25)沒有在時間對象t上運行。請注意,setHour和setMinute函數不返回對Time對象的引用。
t.setHour(10)執行後發生了什麼?函數setHour以某種方式返回對象t的「副本」,並且setMinute(25)正在副本上運行?我用-Wall編譯了程序,並且沒有錯誤或警告返回。
感謝您的協助。
不,他們返回的價值,而不是參考。 – juanchopanza
@juanchopanza:怎麼樣? –
它在聲明中:'Time setHour(int);'通過值返回'Time'。 – juanchopanza