小编Upa*_*yan的帖子

在制作shared_ptr的副本时会发生什么?

我想了解shared_ptr当a shared_ptr被分配给另一个时,a中托管对象的引用计数是如何受到影响的.

我在C++入门第5版中遇到以下声明:

例如,与shared_ptr关联的计数器在...时使用它作为赋值的右手操作数 ... 当我们为shared_ptr分配新值时,计数器会递减 ...

作为一个例子,它显示在那里:

auto p = make_shared<int>(42); // object to which p points has one user

auto q(p); // p and q point to the same object
           // object to which p and q point has two users

auto r = make_shared<int>(42); // int to which r points has one user
r = q; // assign to r, making it point to a different address
       // increase …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr c++11

4
推荐指数
1
解决办法
2021
查看次数

从vector向量检索时,shared_ptr的use_count()返回的意外值

use_count()使用iteratorde-reference 打印共享指针时,下面的程序输出意外值std::vector:

#include<iostream>
#include<memory>
#include<vector>

class A;

typedef std::shared_ptr<A>            sharedPtr;
typedef std::vector<sharedPtr>        sharedPtrVect;
typedef sharedPtrVect::const_iterator vectItr;

class A
{
  public:
    A(int inp): m_Val(inp) { /*std::cout << "*** A ctor called: " << m_Val << " ***" <<std::endl;*/ }
    ~A() { /*std::cout << "### A dtor called: " << m_Val << " ###" <<std::endl; */}

    int getVal() const { return m_Val; }

  private:
    int m_Val;
};

int main()
{
  sharedPtrVect myVect1, myVect2;
  vectItr myVectItr;
  std::shared_ptr<A> tmpPtr; …
Run Code Online (Sandbox Code Playgroud)

vector reference-counting shared-ptr c++11

-2
推荐指数
1
解决办法
232
查看次数

标签 统计

c++11 ×2

shared-ptr ×2

c++ ×1

reference-counting ×1

vector ×1