c++ - Ptr<Node> a = CreateObject <Node>();

标签 c++ class object

当我在 NS-3(网络模拟器)中查看不同的示例时,我遇到了这样的定义。我不明白这个语法到底是什么意思。

Ptr<Node>  a = CreateObject < Node > ();  

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

HelperClass帮助;

Ptr< xxx > a = help.somethingrandom();

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

我想这是在 C++ 中创建对象的另一种方式。但它仍然令人困惑。谁能详细说明发生了什么事? 提前致谢。

最佳答案

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

template<typename Obj>
Ptr<Obj> CreateObject() {
  return Ptr<Obj>(new Obj);
}

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

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

关于c++ - Ptr<Node> a = CreateObject <Node>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485692/

相关文章:

c++ - FreeImage 不能与 CEGUI 一起工作

C++ move 语义 : why copy assignment operator=(&) is called instead of move assignment operator=(&&)?

c++ - std::cout不显示任何内容,也不显示std::cin要求输入

c++ - 如何并行运行Qt GUI和Linux消息队列接收线程?

python - 如何解决无限循环导入?

javascript - 我如何将静态函数的值发送到另一个对象?

java - java 面向对象连接两个类

javascript - JavaScript 中的对象和函数

javascript - 为什么我的按钮没有收到 js 循环创建的 onclick 命令?

java - 能够单独输入第一个对象的名称