如果我声明一个包装在共享指针中的对象:
std::shared_ptr<myClass> myClassObject(new myClass());
然后我想把它作为一个参数传递给一个方法:
DoSomething(myClassObject);
//the called method
void DoSomething(std::shared_ptr<myClass> arg1)
{
arg1->someField = 4;
}
以上是否只是简单地增加了 share _ pt 的引用计数,一切都很酷? 还是留下了一个迷途指针?
你还要这么做吗:
DoSomething(myClassObject.Get());
void DoSomething(std::shared_ptr<myClass>* arg1)
{
(*arg1)->someField = 4;
}
我认为第二种方法可能更有效,因为它只需要复制1个地址(相对于整个智能指针而言) ,但第一种方法似乎更具可读性,而且我不预期会突破性能限制。我只是想确保它不会有什么危险。
谢谢你。