我是計算機科學的學生。在回答之前請完整閱讀我的問題爲什麼我們在重載分配中使用return * this?
今天在C++類中,我們瞭解了重載操作符,特別是賦值操作符,而我的教授說了一些他不喜歡的內容:「請相信我。他在提及return *this
公約時說過這句話。
我問,「但是爲什麼?」他的回答很多,「因爲它是。」
我對這個答案不滿意。
考慮以下幾點:
class length
{
private:
int inches, feet, yards;
public:
//getters, setters, etc.
Length operator=(const Length& Q)
{
this->inches = Q.inches;
this->feet = Q.feet;
this->yards = Q.yards;
return *this;
}
};
基礎上,通過無數的問題和至少3個C++的書認爲,「公約」的存在,因爲它允許擺弄我明白鏈分配但爲什麼是必要的以及它是如何成爲?
一個更深入的問題是this
如何對班級的屬性(IE this->inches
)有單獨的「孩子指針」(我的名詞,不是官方的)?這是如何運作的?是this->inches
只是一個偏移或什麼?
我的教授和我真的很感謝一個答案,這不僅僅是「因爲它是如何完成的」。
請和謝謝
編輯:我想我是在寫這個問題明確;但是,根據我收到的答覆,我認爲存在一個錯誤的交流。我試圖理解公約的來源(我相信C的根源)以及爲什麼它是這樣。
@MartinJ。 - 好的發現,但對其他人投票結束,請看看接受的答案。然後考慮下調它,並提出一個正確的。 –
如果你的教授不能提出比「因爲它是如何完成」更好的答案,你應該找一位新教授。 –
我個人的觀點是,返回一個指針是技術上正確的事情,但這太'C'了。得像那些其他時髦的語言,並試圖隱藏指針的存在。 –