11

让我们foo成为一个带有复制赋值运算符的结构或类:

struct foo {
    foo &operator=(const foo &);  // or with some other return type?
};

除了*thisoperator=(). _ _ 将其用于与分配无关的事情并不明智。

4

2 回答 2

9

标准中的示例是std::atomic. 它返回分配的值。如果它返回引用,那么通读它可能会产生不同的结果。

于 2015-05-20T21:44:18.657 回答
0

如果要防止分配链接。

有时它很好地防止这样的表达:

x = y = z = a = b = c = d = foo{15};

所以你让赋值运算符返回无效。

struct foo {
    void operator=(const foo &);
};

对于某些类型,链接没有意义。但是你必须根据具体情况来看待它。

于 2015-05-20T22:44:41.893 回答