我之前认为不能将一个常量 shared_ptr
分配给非常量的 shared_ptr
。但令人惊讶的是,我可以像下面这样分配,而且它能正常工作。
#include <iostream>
#include <memory>
using namespace std;
int main()
{
const std::shared_ptr<const string> a = std::make_shared<const string>("Hello world");
std::shared_ptr<const string> b = a;
cout << "a count " << a.use_count() << ", b count " << b.use_count() << endl;
return 0;
}
.use_count()
被打印为2。请有人帮我理解我是如何做到的?
shared_ptr& operator=( const shared_ptr& r )
和shared_ptr( const shared_ptr<Y>& r )
,它们明确允许b = a;
的操作。 - RbMm