std :: shared_ptr初始化

时间:2014-12-15 01:44:50

标签: c++ c++11 shared-ptr

有什么区别:

std::shared_ptr<int> p1 = std::shared_ptr<int>(new int);

std::shared_ptr<int> p2 = (std::shared_ptr<int>) new int;

哪个更好,为什么?

1 个答案:

答案 0 :(得分:11)

都不是。这个是严格优先的:

auto p3 = std::make_shared<int>();

(虽然它的语义略有不同,因为它初始化了int对象,与代码不同。)

此版本是子表达式正确的,不包含红旗词“new”,并且还使用更有效的分配方案。