用重载后的+计算并返回链式结构后为啥不能用重载后的=赋值

这个是我重载的+

img


这是我的链式结构

img


这是我重载的=

img


这是主函数

img


这是报错

img

在C++中,对于一个类的重载运算符,包括重载的"+"运算符,都可以返回一个值,但是这个返回值并不是一个左值。因此,对于链式结构,在重载后的"+"运算符中返回的是一个新的链式结构对象,而不是原始的对象本身。
因此,不能直接使用重载后的"="运算符来赋值新的链式结构对象,因为在这种情况下,重载后的"="运算符期望的是左值,但是重载后的"+"运算符返回的是右值。
为了解决这个问题,可以在链式结构类中定义一个特殊的函数,比如"copyFrom()"函数,来完成新对象的赋值。这个函数接受一个右值作为参数,并将其赋值给当前对象。例如:

class LinkedList {
    // ...类定义...
public:
    LinkedList& operator+(const LinkedList& other) const {
        LinkedList result = *this; // 创建一个新对象
        // 在新对象上执行加法操作
        // ...
        return result;
    }
    void copyFrom(const LinkedList& other) {
        // 执行深拷贝操作
        // ...
    }
};

然后,可以使用以下代码进行链式结构对象的赋值:

LinkedList a, b, c;
// 假设已经将元素添加到了 ab 中
c.copyFrom(a + b); // 赋值新的链式结构对象

这样,就可以通过在链式结构类中定义一个特殊的函数来解决赋值问题。