定义一个类,类的数据成员为一个 shared_ptr。使用此 shared_ptr 来管理一个 vector,即可实现在多个类对象间共享同一个 vector。当所有类对象都被销毁时 vector 才会被销毁。【注意】一个类只会与它的拷贝共享一个 vector,单独定义的两个类是不共享的。 一个实例:StrBlob类: StrBlob 类是一个使用动态内存在多...
shared_ptr<int> p2 (new int (1024)); //正确:使用了直接初始化形式 shared_ ptr<int> clone (int p) { //正确:显式地用int*创建shared_ ptr<int> return shared_ptr<int> (new int(p) ) ; //错误 } reset 使用示例: #include <memory> #include <iostream> #include <vector> #include <s...
1.shared_ptr允许有多个指针指向同一个对象,unique_ptr独占所指向的对象。 2.类似于vector,智能指针也是模板。创建智能指针: 1shared_ptr<string> p1;//指向string的shared_ptr2shared_ptr<list<int>> p2;//指向int的list的shared_ptr 使用make_shared函数分配一个对象并初始化它,make_shared函数返回一个指向此...
shared_ptr允许多个指针指向同一个对象,shared_ptr的引用计数为指向该对象shared_ptr的数量,当引用计数为0时自动释放该对象。 智能指针是对指针的封装。 智能指针是模版。 使用智能指针需要包含头文件 #include <memory> shared_ptr<string> p1; // shared_ptr,可以指向string shared_ptr<vector<int>>p2; // ...
其实大部分情况下智能指针并不需要 shared_ptr,用 unique_ptr 就够了,没有这么多要共享的东西。 还有一种比较简便的做法,就是直接用 vector 来管理动态数组,这就已经能满足很多 new[] 的情况了。一般情况下,写 C++ 的时候,还是得遵循能不用指针就不用指针的原则。
shared_ptr<Student> s3 = make_shared<Student>(); if (s3) { cout << "s3不为空 name:" << s3->m_name << endl; } else { cout << "s3为空" << endl; } } void test_16(vector<shared_ptr<Student>> &vec) { auto s1 = ...
std::weak_ptr:弱引用的智能指针,它不共享指针,不能操作资源,是用来监视 shared_ptr 的。 共享智能指针(shared_ptr)是指多个智能指针可以同时管理同一块有效的内存,共享智能指针 shared_ptr 是一个模板类,如果要进行初始化有三种方式:通过构造函数、std::make_shared 辅助函数以及 reset 方法。共享智能指针对象初...
024 shared_ptr shared_ptr 类 类似vector,智能指针也是模板。因此,当我们创建一个智能指针时,必须提供额外的信息 —— 指针可以指向的类型。与 vector 一样,我们在尖括号内给出类型,之后是所定义的这种智能指针的名字: shared_ptr<string>p1;// shared_ptr,可以指向 stringshared_ptr<list<int>>p2;// shared...
我认为返回shared_ptr<vector<T>>很少有用。我只会这样做,如果几个对象,其中持有一个共享的向量,...