首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ptr<Node> a= CreateObject <节点>()

Ptr<Node> a= CreateObject <节点>()
EN

Stack Overflow用户
提问于 2016-11-08 19:25:40
回答 1查看 694关注 0票数 0

当我在NS-3 (网络模拟器)中经历不同的例子时,我遇到了这样的定义。我搞不懂这个语法到底是什么意思。

代码语言:javascript
复制
Ptr<Node>  a = CreateObject < Node > ();  

在其他一些情况下,它们使用类似的语法,但RHS非常不同。

HelperClass帮助;

代码语言:javascript
复制
Ptr< xxx > a = help.somethingrandom();

或者在xxx之前加上const前缀。

我猜这是在c++中创建对象的另一种方式。但它仍然令人困惑。有谁能详细解释一下发生了什么吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-08 19:35:57

假设Ptr是一些智能指针类。看起来CreateObject是一个模板函数,其实现可以简单地归结为:

代码语言:javascript
复制
template<typename Obj>
Ptr<Obj> CreateObject() {
  return Ptr<Obj>(new Obj);
}

这个想法是,代码是通用的,它可以在任何类型下工作。如果构造函数碰巧抛出异常,则使用函数可确保在多次初始化期间不会发生资源泄漏。

标准库有一个等效的std::shared_ptr/std::unique_ptr和匹配的std::make_shared/std::make_unique函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40485692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档