虽然我在NS-3(网络模拟器)中经历了不同的例子,但我遇到了这样的定义。我想弄清楚这种语法究竟意味着什么。
Ptr<Node> a = CreateObject < Node > ();
在其他一些情况下,他们使用类似的语法,但RHS是完全不同的。
HelperClass帮助;
Ptr< xxx > a = help.somethingrandom();
或在const
之前加xxx
前缀。
我想这是在c ++中创建对象的另一种方式。但它仍然令人困惑。任何人都可以详细说明发生了什么? 提前致谢。
答案 0 :(得分:1)
假设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
函数。