2016-11-08 124 views
0

雖然我正在通過NS-3(網絡模擬器)中的不同示例,但我遇到了這樣的定義。我無法弄清楚這個語法究竟是什麼意思。Ptr <Node> a = CreateObject < Node >();

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

在其他一些情況下,它們使用相似的語法,但是RHS是完全不同的。

幫助類幫助;

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

或他們xxx之前前綴const

我想這是在C++中創建對象的不同方式。但它仍然令人困惑。任何人都可以請詳細說明發生了什麼? 在此先感謝。

+4

您是否聽說過[templates](http://stackoverflow.com/documentation/c%2b%2b/460/templates)的概念? –

+0

我不知道模板。 – spectre

+0

它們通過函數結果初始化一個對象。 – ilotXXI

回答

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功能。

+0

謝謝。我不知道智能指針和模板函數。那麼我怎麼理解呢? – spectre

+0

@spectre在C++上閱讀一本書? – Yakk

+0

是的。我正在做。謝謝。 – spectre

相關問題