关于shared_ptr临时变量是否会增加引用计数的问题
void process(std::shared_ptr<int> ptr)
{
std::cout << "inside the process function:" << ptr.use_count() <<endl;
std::cout << "unique? " << ptr.unique() << endl;
}
process(shared_ptr<int> (new int(100)));
shared_ptr<int> (new int(100))作为临时变量应该是在process调用结束后才被析构的,而ptr的初始化使用了拷贝构造函数,理应使引用计数加一,但为什么在有两个shared_ptr(ptr和临时变量)指向同一片内存区域时,输出为:
inside the process function:1
unique? 1
萌新百思不得其解。
作为参照
shared_ptr<int> p1(new int(100));
process(p1);
此时输出为
inside the process function:2
unique? 0