我有一个unique_ptr
的简化示例。我想知道在独特指针中需要移动构造函数和移动赋值操作符吗? 如果我理解移动构造函数(并传递右值),这两行代码应该相同。什么是需要在Unique Pointers中移动构造函数和移动赋值构造函数?
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; }
};
回访所有权:汽车独特=的std :: make_unique() –
不支持移动语义,你不能把它的向量 – sp2danny