gpt4 book ai didi

c++ - 为什么在这种情况下需要取消引用 'this'? (赋值运算符)

转载 作者:太空狗 更新时间:2023-10-29 19:55:58 25 4
gpt4 key购买 nike

所以这是一个用户定义 vector 类的复制赋值示例 [摘自 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' is a pointer, so dereferencing it should actually give us the current object it points at.

是的。

How does an object gets accepted as a return value in a case when a reference to said object is expected?

与任何其他引用的方式相同。

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

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

需要取消引用指针以获得指针对象,与返回引用类型的函数几乎没有关系,除了说如果你没有取消引用指针,你' d 必须返回指针,因此返回类型必须是 Vector*

关于c++ - 为什么在这种情况下需要取消引用 'this'? (赋值运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com