我最近使用了新的C++ 11功能,如std :: shared_ptr,因为我将C代码转换为类,并且在此代码中存在大量“老式“指针。 我有一个疑问:在一个类的方法中,我使用本地shared_ptr,我可以初始化它们与传递到另一个smart_ptr引用的数据,然后修改数据? 例如:std :: shared_ptr使用其他shared_ptr数据初始化
void myFunction(std::shared_ptr<T> &my_reference)
{
std::shared_ptr<T> my_local_ptr(my_reference.get());
/* Doing stuff on local pointer,
which modifies the object kept by my_reference pointer */
}
我做错了吗?或者你认为更好地直接修改my_reference中的数据,而不进行冗余操作?
问候
迈克
通过做你正在做什么,你有*两个*单独的共享指针,具有单独的引用计数,但都指向同一个对象。这通常不是一个好主意。如果你只是做'std :: shared_ptr my_local_ptr = my_reference;'正确的事情会自动发生“。 –