2013-03-13 86 views
0

假設我有一個名爲MyClass的類,我正在編寫一個函數,該函數應返回Myclass類型的對象。該對象在調用該函數之前已經存在。所以通常我會做:返回指向類的指針的函數

MyClass function() { 
return MyClassInstance; 
} 

但後來我想起了指針和引用,我認爲這樣做會造成MyClassInstance的新副本,並返回它,這是浪費內存。所以我想,爲什麼不這樣做:

MyClass * function() { 
return &MyClassInstance; 
} 

那麼結果可能是訪問,

Myclass * object; 
object = function(); 
object->"class member"... 

它是正確的嗎?

回答

0

你當然可以這樣做。它會運行正常。語法方面沒有問題。但是您需要非常小心,指向該對象的指針不止一個。這可能會給你帶來一些隱藏的問題。

+0

我不確定我明白你的意思。你能提供一些細節嗎? – jazzybazz 2013-03-13 02:59:48

+0

你寫的代碼沒有問題。但是你需要知道你想要做什麼。如果你只是想通過另一個指針引用同一個對象,而不是改變原始對象的值,或者只是假設你改變了它的值。那麼這就是完美的方式。因爲它可以通過使用指針來節省內存。如果你需要一個新的物體,那麼這種方式可能是有害的。因爲會有兩個指針指向唯一的一個對象。通過使用任何指針的任何更改都會影響對象的狀態。你需要保持這種狀況。我是否清楚地表達了自己? – YXHJ513 2013-03-13 03:17:25

+0

是的,非常感謝。 – jazzybazz 2013-03-13 03:23:18

1

我不確定你在這裏是你的最終目標,語法看起來不錯。 但也許你應該閱讀關於C++中的單例模式。