所以我從Java到來,現在正在學習C++返回一個指針變量,爲什麼在堆,而不是變量本身在C++
我瞭解指針工作,什麼棧和堆內存是和我GOOGLE了很多,但我似乎無法理解爲什麼我們不會只是返回對象本身,而不是像這個例子中的指針指向堆上創建的對象:
(我明白我們爲什麼有在第一個例子中分配堆上的對象而不是堆上的對象)。
class Thingy;
Thingy* foo()
{
Thingy *pointerToHeap = new Thingy();
return pointerToHeap;
}
所以從Java的未來我會做這樣的:
class Thingy;
Thingy foo()
{
Thingy a;
return a;
}
正如我幾乎總是上了堆中對象的壽命比在堆棧上的對象不再是原因,我不明白爲什麼我們會寫函數就像第一個例子,如果我的函數也可以。
如果變量是太大,不適合在堆棧上你沒有選擇(例如當你需要一大堆東西時) – Borgleader 2015-01-26 18:51:24
返回值是合法的,但並不總是可取的。 – 2015-01-26 18:51:55
那麼,什麼樣的編程練習會更好?何時才能返回值呢? – 2015-01-26 18:55:21