【发布时间】:2015-08-04 19:46:47
【问题描述】:
我有一个unique_ptr 的简化示例。我想知道唯一指针中的移动构造函数和移动赋值运算符是什么?
如果我理解正确的移动构造函数(和传递右值),这两行代码的结果应该是一样的。
UniquePointer<T> a(new T);
UniquePointer<T> a(UniquePointer<T>(new T));
这里是简化的UniquePointer 代码:
template<typename T> class UniquePointer {
T* m_ptr;
public:
UniquePointer(const UniquePointer&) = delete;
UniquePointer& operator=(const UniquePointer&) = delete;
UniquePointer(UniquePointer&& rhs);
UniquePointer& operator=(UniquePointer&& rhs);
UniquePointer(T* ptr) : m_ptr(ptr) { }
T* operator->() const { return m_ptr; }
T& operator*() const { return *m_ptr; }
T* get() const { return m_ptr; }
~UniquePointer() { delete m_ptr; }
};
【问题讨论】:
-
返回所有权:auto unique = std::make_unique
() -
不支持移动语义,你不能把它放在向量中
标签: c++ c++11 smart-pointers move-semantics unique-ptr