我想了解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) 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)