簡體   English   中英

為什么在這種情況下需要取消引用“this”? (賦值運算符)

[英]Why does 'this' need to be dereferenced in this case? (assignment operator)

所以這是一個例子[摘自Bjarne Stroustrup的“C ++之旅(第2版)”中的用戶定義矢量類的復制賦值:

Vector& Vector::operator=(const Vector& a) // copy assignment
{
    double* p = new double[a.sz];
    for (int i=0; i!=a.sz; ++i)
        p[i] = a.elem[i];
    delete[] elem; // delete old elements
    elem = p; // here elem is the vector's data holding member array
    sz = a.sz;
    return *this;
}

'this'是一個指針,所以取消引用它實際上應該給我們指向它的當前對象。 在預期對所述對象的引用的情況下,如何將對象作為返回值接受?

'this'是一個指針,所以取消引用它實際上應該給我們指向它的當前對象。

是的。

在預期對所述對象的引用的情況下,如何將對象作為返回值接受?

與任何其他參考相同的方式。

int x = 3;
int& ref = x;  // just fine

為什么在這種情況下需要取消引用“this”? (賦值運算符)

需要取消引用指針以獲取指針對象,與返回引用類型的函數幾乎沒什么關系,除了說如果你沒有取消引用指針,你必須返回指針,所以返回類型必須是Vector*

this是一個指向已分配對象的指針。 該函數返回對象的引用。 因此,您需要取消引用指針以獲取對象的左值。

this是一個指針類型。 您的函數返回對Vector的引用。 要將指針轉換為左值,您需要取消引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM