std :: shared_ptr初始化

Rem*_*mis -1 c++ shared-ptr c++11

有什么区别:

std::shared_ptr<int> p1 = std::shared_ptr<int>(new int);
Run Code Online (Sandbox Code Playgroud)

std::shared_ptr<int> p2 = (std::shared_ptr<int>) new int;
Run Code Online (Sandbox Code Playgroud)

哪个更好?为什么?

Ker*_* SB 11

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

auto p3 = std::make_shared<int>();
Run Code Online (Sandbox Code Playgroud)

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

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