std::basic_ostream<CharT,Traits>::operator=
來自 cppreference.com
< cpp | io | basic_ostream
protected: basic_ostream& operator=( const basic_ostream& rhs ) = delete; |
(1) | |
protected: basic_ostream& operator=( basic_ostream&& rhs ); |
(2) | (C++11 起) |
1) 複製賦值運算子是保護的,並且已被刪除。輸出流不是 CopyAssignable。
2) 移動賦值運算子交換基類的所有資料成員,除了 rdbuf(),與 rhs,如同透過呼叫 swap(*rhs)。此移動賦值運算子是受保護的:它僅由派生的可移動輸出流類 std::basic_ofstream 和 std::basic_ostringstream 的移動賦值運算子呼叫,它們知道如何正確地移動賦值相關聯的流緩衝區。
[編輯] 引數
rhs | - | 要賦值給 *this 的 basic_ostream 物件 |
[編輯] 示例
執行此程式碼
#include <iostream> #include <sstream> #include <utility> int main() { std::ostringstream s; // std::cout = s; // ERROR: copy assignment operator is deleted // std::cout = std::move(s); // ERROR: move assignment operator is protected s = std::move(std::ostringstream() << 42); // OK, moved through derived std::cout << s.str() << '\n'; }
輸出
42
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2067 | C++11 | 1. 過載 (1) 的引數型別為 basic_ostream& 2. 過載 (2) 的引數型別為 const basic_ostream&& |
1. 新增 const 2. 移除 const |