有什么区别:
std::shared_ptr<int> p1 = std::shared_ptr<int>(new int);
和
std::shared_ptr<int> p2 = (std::shared_ptr<int>) new int;
哪个更好,为什么?
答案 0 :(得分:11)
都不是。这个是严格优先的:
auto p3 = std::make_shared<int>();
(虽然它的语义略有不同,因为它初始化了int
对象,与代码不同。)
此版本是子表达式正确的,不包含红旗词“new”,并且还使用更有效的分配方案。