可能重複:
How can moved objects be used?
What constitutes a valid state for a 「moved from」 object in C++11?移動的物體應該保持「安全」狀態嗎?
當實現在C++ 11移動語義,應被移至從對象被留在一個安全狀態,或可以它只是處於「垃圾」狀態?
例如在以下C++ 11包裝器的示例中將移動構造器實現爲原始FILE*
資源的首選方法是什麼?
// C++11 wrapper to raw FILE*
class File
{
FILE* m_fp;
public:
// Option #1
File(File&& other)
: m_fp(other.m_fp)
{
// "other" left in a "junk" state
}
// Option #2
File(File&& other)
: m_fp(other.m_fp)
{
// Avoid dangling reference in "other"
other.m_fp = nullptr;
}
...
};
不會調用'垃圾'對象的析構函數嗎?如果它和析構函數調用'fclose(m_pf)',那麼它肯定會把所有東西搞砸 – 2012-10-30 11:18:57