初始化智能指针成员变量的正确方法是什么?

时间:2015-12-14 11:43:29

标签: c++ smart-pointers

我目前正在学习智能指针,并且实际上也在我的代码中使用它们。但是,我想重读有关智能指针的文档,并在MSDN中遇到了这一行(https://msdn.microsoft.com/de-de/library/hh279669.aspx):

shared_ptr<Song> sp5 = NULL;

现在我在我的头文件中使用它:

{{1}}

我现在尝试了几次但是我无法在没有出现大量错误的情况下让MSDN示例正常工作,但在尝试找出问题时,资源方面并没有太多甚至告诉我初始化这样的智能指针。

是否真的有必要像MSDN建议的那样解决它?

2 个答案:

答案 0 :(得分:2)

不,没有必要。初始化智能指针没有“正确”的方法。

正如评论本身所示,您可以安全地省略初始化。

答案 1 :(得分:1)

对于初始化我只会写。

shared_ptr<Song> sp5;

然后分配新指针或使用

sp5.reset(new Song());

使用

进行初始化
shared_ptr<Song> sp5(nullptr);

用于表明您希望sharded_ptr在开头为空。 但我个人会建议你,当你使用null shared_ptrs来检查它们是否为null之前使用它们。 shared_ptr operator bool检查指针是否为空。 http://www.cplusplus.com/reference/memory/shared_ptr/operator%20bool/