1

我知道weak_ptr是避免循环引用的好方法。

但是,我不确定是否应该尽可能使用它来提高性能,例如仅在读取指针中的内容时。

例如,我有一个存储智能指针的向量:

typedef shared_ptr<MyClass> MyClassPtr;
vector<MyClassPtr> v;
v.push_back(..);
...

我有一个功能来搜索一个项目并打印出来。

void foo(vector<MyClassPtr> &v) {
  // find and get an item at i
  MyClassPtr ptr = v[i]; // <-- Do I really need to increase reference count here? 
                         //     I just want to print out the item's content.
  ptr->print();
}

在这种情况下使用weak_ptr会更好吗?有什么我应该注意的陷阱吗?

4

0 回答 0