2012-12-06 66 views

回答

5

該成員是否會在堆棧上創建?

是的。

如果是這樣,如果MySecondClass通過new創建,會發生什麼情況?這個成員是否仍然在堆棧中?

號將與對象的其餘部分「上堆」或任何你自由存儲區的實施,或其它地方的對象被動態分配的(這可能是某個內存池或別的東西一起被存儲, )。

這裏值得注意的是,術語「堆棧」和「堆」通常被誤用。什麼你真的是:

是否有成員自動存儲時間是的。

這樣做即使封裝對象有動態存儲時間否— 動態性從某種意義上說是「繼承的」。

[C++11: 3.7.5]:成員子對象,基類子對象和數組元素的存儲持續時間是其完整對象(1.8)的存儲持續時間。

在任何情況下,內存中的實際位置將分別是堆棧和自由存儲(「堆」),這並不重要。

另外,main必須int返回類型。

+0

從技術上講,會員沒有自動存儲時間。子對象具有其包含對象的存儲持續時間。 –

+0

@ R.MartinhoFernandes:奧利?該死。 –

+0

是的,請參閱§3.7.5。我明白你的意思,但這些話不是正確的:/ –

1

是的,成員是在堆棧上創建的。

如果使用「新建」創建MyClass的新對象,資源將分配到堆上。