相关疑难解决方法(0)

将共享指针作为参数传递

如果我声明一个包装在共享指针中的对象:

std::shared_ptr<myClass> myClassObject(new myClass());
Run Code Online (Sandbox Code Playgroud)

然后我想将它作为参数传递给方法:

DoSomething(myClassObject);

//the called method
void DoSomething(std::shared_ptr<myClass> arg1)
{
   arg1->someField = 4;
}
Run Code Online (Sandbox Code Playgroud)

以上只是增加了shared_pt的引用计数,一切都很酷吗?还是留下一个悬垂的指针?

你还是应该这样做吗?:

DoSomething(myClassObject.Get());

void DoSomething(std::shared_ptr<myClass>* arg1)
{
   (*arg1)->someField = 4;
}
Run Code Online (Sandbox Code Playgroud)

我认为第二种方式可能更有效,因为它只需要复制1个地址(而不是整个智能指针),但第一种方式似乎更具可读性,我不期望推动性能限制.我只是想确保没有危险的东西.

谢谢.

c++ c++-faq shared-ptr c++11

82
推荐指数
3
解决办法
5万
查看次数

标签 统计

c++ ×1

c++-faq ×1

c++11 ×1

shared-ptr ×1