fen*_*fen 4 c++ stl smart-pointers unique-ptr c++11
这是一种正确的方法吗?
void helperFunc(MyClass *ptr)
{
// do something with ptr,
}
unique_ptr<MyClass> p(new MyClass());
helperFunc(p.get());
Run Code Online (Sandbox Code Playgroud)
或者我应该使用shared_ptr进行此类操作?
除非您想获取内存的所有权(在这种情况下,您应该传递a shared_ptr或a unique_ptr),为什么要使用指针?
通过引用传递.
void helperFunc(MyClass& obj)
{
// do something with ptr,
}
unique_ptr<MyClass> p(new MyClass());
helperFunc(*p);
Run Code Online (Sandbox Code Playgroud)
当你不想获得所有权时使用原始指针在一般情况下是好的,但在这里是不必要的,除非你明确地想要允许nullptrs(在这种情况下,是的,使用原始指针).
如果helpFunc获取所有权,则传递std :: shared_ptr或std :: unique_ptr,否则只需通过引用传递:
void helperFunc(MyClass& my_class)
{
}
Run Code Online (Sandbox Code Playgroud)
呼叫:
helperFunc(*p);
Run Code Online (Sandbox Code Playgroud)