gpt4 book ai didi

c++ - 为什么 operator = 返回 *this?

转载 作者:可可西里 更新时间:2023-11-01 15:37:17 25 4
gpt4 key购买 nike

假设我想覆盖 operator = 这样我就可以做类似的事情

Poly p1;  // an object representing a polynomial
Poly p2; // another object of the same type
p2 = p1; // assigns all the contents of p1 to p2

然后在我的 operator = 实现中,我有这样的东西:

Poly& Poly::operator=(const Poly &source) {
// Skipping implementation, it already works fine…
return *this;
}

不要介意实现,它已经运行良好。

我担心的是当您返回*this 时会发生什么?我知道它会返回对该对象的引用,但会发生这种情况吗?

p2 = &p1

最佳答案

返回 *this 这样您就可以编写普通的复合 C++ = 语句,例如:

Poly p1; //an object representing a polynomial
Poly p2;
Poly p2;

// ...

p3 = p2 = p1; //assigns all the contents of p1 to p2 and then to p3

因为该语句基本上是:

p3.operator=(p2.operator=(p1));

如果 p2.operator=(...) 没有返回 *this 你将没有任何有意义的东西可以传递给 p3.operator=( ...)

关于c++ - 为什么 operator = 返回 *this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562865/

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