2010-08-19 68 views

回答

0

而不是超載新運營商遵循Factory模式。

  • 創建此類的新實例的靜態方法。
  • 的訪問方法來獲得最後一個實例(從堆棧的頂部)
+0

我一直聽到很多關於使用工廠而不是最近重載「新」......爲什麼是這樣? – xitrium 2010-08-19 12:04:52

+0

''獲取最後一個實例的訪問方法(從棧頂開始)''---- ???你能詳細解釋一下嗎? – IanH 2010-08-19 12:11:57

2

這一切都在實例:

AnotherClass::SomeMethod(...) { 
    MyClass stackBased; 
    MyClass *heapBased; 

    *heapBased = new MyClass(); 
    *heapBased->DoSomething(); 
    delete heapBased; 

    stackBased.DoSomething(); 

    ... 
} 

一個stackbased類是自動分配的,實例化,並重新分配在堆棧上,而你需要自己動手做一堆。

+0

這不是問題。問題是,你會如何阻止你的代碼片段編譯?你對'MyClass'做了什麼,以致於「我們不能用new創建類的實例」(引用上面的問題)。 – 2010-08-19 12:05:15

+0

對不起,誤解了這個問題。但在那種情況下,KennyTM指出這個問題可能是重複的。 – 2010-08-19 12:11:12