#include "iostream"
#include <memory>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
class ClassFactory
{
//工厂模式和unique_ptr是对好基友
//当class
};
class MyClass
{
private:
// MyClass owns the unique_ptr.
unique_ptr<ClassFactory> factory;//当该成员随着MyClass对象析构时,也会
public:
// Initialize by using make_unique with ClassFactory default constructor.
MyClass() : factory (make_unique<ClassFactory>())
{
}
void MakeClass()
{
//factory->DoSomething();
}
};
int main()
{
unique_ptr<int> pInt(new int(6));
cout << *pInt <<endl;
//unique_ptr<int> pInt2(pInt); // 报错
//unique_ptr<int> pInt3 = pInt; // 报错
auto pInt4 = move(pInt);
cout << *pInt4 <<endl;
unique_ptr<int> pInt5 (move(pInt4));
//cout << *pInt4 <<endl;运行期出错
cout << *pInt5 <<endl;
auto deleter = [](int* p){
cout <<"del "<< *p <<endl;
};
unique_ptr<int, decltype(deleter)> pInt6(new int(6), deleter);
//pInt6.release(); deleter不起效果 放弃对它所指对象的控制权,并返回保存的指针,将up置为空,不会释放内存
pInt6.reset();//参数可以为 空、内置指针,先将up所指对象释放,然后重置up的值
unique_ptr<int[]> p(new int[5]{1,2,3,4,5});
cout <<p[0] <<endl;
p[0]=0;
cout <<p[0] <<endl;
getchar();
return 0;
}
C++ unique_ptr
最新推荐文章于 2025-12-06 09:52:47 发布
本文探讨了C++中智能指针unique_ptr与工厂模式的结合使用,展示了如何在类中初始化和使用unique_ptr。通过实例代码解释了unique_ptr的转移操作及其在防止内存泄漏上的作用,并介绍了 deleter 的自定义使用。此外,还涉及了数组类型的unique_ptr用法。
3万+

被折叠的 条评论
为什么被折叠?



