![](/img/trans.png)
[英]why is the 'this' pointer dereferenced when returning by reference for operator assignment?
[英]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.