->智能指针本质上就是RAII资源管理功能的自然展现。
1.模板化和易用性:能够包装任意类型的指针。
2.具有指针的行为:构造 析构 获取原始指针 解引用 指针运算符 bool运算符(本类型到bool的隐式转换)
3.拷贝构造和赋值(拷贝):
禁止拷贝,作为智能指针功能不完善但是可以避免出错(同一对象释放两次)
smart_ptr(const smart_ptr&) = delete;
smart_ptr& operator=(const smart_ptr&) = delete;
拷贝时转移指针的所有权,auto_ptr,C++17已删除
->C++中提供了移动构造函数而没有提供拷贝构造函数,则后者自动被禁用。