当我在 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/