【发布时间】:2020-09-10 21:32:47
【问题描述】:
std::make_shared<Object>("foo") 是做什么的?
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
我知道std::make_shared<T> 是模板类,我可以理解Object("foo") 确实是一个临时对象。但是我看不懂std::make_shared<Object>("foo")。
有人可以一步一步地解释我创建的对象序列和它完成的操作吗?
【问题讨论】:
-
std::make_shared<T>()不是模板类。它是一个辅助函数,它 (1) 动态分配一个T,它使用提供的参数(任何参数 - 其中可能有零个或多个 - 在()之间)和 (2) 构造和返回一个std::shared_ptr<T>来管理该对象。 -
std::make_shared<T>()不是模板函数吗? -
是的,它是一个模板函数。您将其描述为模板类,但事实并非如此。
-
我明白了,很抱歉打扰您。我会尽量避免。
-
@john 我认为您的 cmets 很有帮助。您是刚刚删除了它们吗?还是仅仅因为我们有相似的名字?
标签: c++ template-classes