讓foo
是一個結構或類與拷貝賦值運算符:有沒有從複製賦值運算符中不返回*的有效理由?
struct foo {
foo &operator=(const foo &); // or with some other return type?
};
有曾經一個合理理由退貨以外*this
從operator=()
什麼?將它用於與作業無關的事情並不合格。
讓foo
是一個結構或類與拷貝賦值運算符:有沒有從複製賦值運算符中不返回*的有效理由?
struct foo {
foo &operator=(const foo &); // or with some other return type?
};
有曾經一個合理理由退貨以外*this
從operator=()
什麼?將它用於與作業無關的事情並不合格。
標準的例子是std::atomic
。它返回分配的值。如果它返回引用,那麼通讀它可能會產生不同的結果。
如果您想防止分配鏈接。
有時它很好的防止表達式是這樣的:
x = y = z = a = b = c = d = foo{15};
所以你讓賦值運算符返回void。
struct foo {
void operator=(const foo &);
};
對於某些類型的鏈接沒有任何意義。但是你必須以案例爲基礎來看待這個問題。
當您返回'this *'時,您可以將賦值運算符鏈接爲'i = j = k = ...'。您可以返回其他內容,但這將基於您的定義以及您希望如何使用類別的用處如何 – Alex
表達式模板。 –
@AlanStokes如果你詳細闡述,那就太好了,你知道的。 –