-1
如果我在堆上分配一個新的對象,是否所有變量都定義在對象的類中也堆在堆上?C++堆對象有堆棧或堆成員?
例如,假設我有一個名爲_pos的數組中有一個x,y,z座標的Node類。對於用戶創建多個Node對象的緣故,節點聲明堆上爲:
Node n = new Node(0, 0, 0);
我應該也宣佈在堆上的位置數組:
class Node {
public:
Node(double x, double y, double z) {
_pos = new double[3] {x, y, z};
}
private:
double* _pos;
}
或者是_pos陣列已經考慮在堆上及以下工程,以及
class Node {
public:
Node(double x, double y, double z) {
_pos = double[3] {x, y, z};
}
private:
double* _pos;
}
我猜第二個也被認爲是在堆上,在這種情況下,它也使釋放更容易一點,但我希望小號omeone可以確認。
「我還應該在堆上聲明位置數組嗎?」不,這不是必需的。 (爲什麼會這樣?) – DimChtz
兩種替代方法都完全不同。這裏沒有「正確」或「錯誤」,這取決於。只有你知道正確的答案是什麼,因爲只有你知道應用程序的其餘部分如何使用這些對象。要確定正確的答案,您需要查看C++書籍中關於對象,自動範圍和動態範圍的解釋。 –