gpt4 book ai didi

c++ - `void operator=(T&&)` 和 `T& operator=(T&&)` 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 08:17:03 24 4
gpt4 key购买 nike

class base 
{
public:
base(const base&) = delete;
base()
{
cout << "construct" << endl;
}
~base()
{
cout << "destruct" << endl;
}

int a;
int b;

/* The difference explanation I desired is here */
void operator=(base&& other)
// base& operator=(base&& other) // this needs to collaborate with "return *this"
{
this->a = other.a;
this->b = other.b;
// return *this;
}

/* Not here */
base& operator=(base& other) = delete;
};
operator=(T&&)两个版本有什么区别?他们似乎都对我有用。但是,作为类成员函数,网站推荐 base& operator=(T&&)版本。

最佳答案

在一种情况下,a=b=c作品。另一方面,它没有。
这就对了。
传统上,a=b=c是否b=c然后将结果分配给 a .如果您的 operator=返回 void ,它反而无法编译。

关于c++ - `void operator=(T&&)` 和 `T& operator=(T&&)` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65661151/

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