當我在函數中返回指向引用類型的指針時,出現編譯器錯誤initial value of reference to non-const must be an lvalue
。該功能是這樣返回指向參考的指針
Testing& copy(Testing test)
{
x = test.x;
return this;
}
但是,當我改變this
到*this
,該錯誤消失。
當我在函數中返回指向引用類型的指針時,出現編譯器錯誤initial value of reference to non-const must be an lvalue
。該功能是這樣返回指向參考的指針
Testing& copy(Testing test)
{
x = test.x;
return this;
}
但是,當我改變this
到*this
,該錯誤消失。
指針和引用不是一回事。 this
是指針到當前類實例,而*this
是作爲一個值的實際實例(更具體地說,左值用作返回值)。
在C++中,this
特殊變量將指針保存到類實例。
您正在創建一個函數,該函數將一個引用返回給一個實例,另一個名稱爲相同的內存位置。
當您使用*this
時,您將取消引用this
指針,獲取保存當前實例的實際內存位置並返回一個別名。
它確實有效!如果您需要多態性,請謹防Object Slicing Problem。
切片僅適用於按值返回/分配。 – Angew
引用不能有指針,但指針*可以*有引用。如果你想返回一個指向你的對象的指針,返回'this'。如果你想返回對象的引用,返回'* this'。 – WhozCraig
你的問題是什麼? 'this'是指針,'* this'是一個引用,如果你返回一個引用,你的函數將被編譯。毫無疑問。 –
@WhozCraig你能否詳細說明,我絕對不會看到你的意思。 –