動態分配對象數組這是一個初學者的問題,但我已經很長時間沒有做C+了,下面是.我有一個類,它包含一個動態分配的數組,比如說class A{
int* myArray;
A()
{
myArray = 0;
}
A(int size)
{
myArray = new int[size];
}
~A()
{
// Note that as per MikeB's helpful style critique, no need to check against 0.
delete [] myArray;
}}但是現在我想要為這些類創建一個動態分配的數組。以下是我的當前代碼:A* arrayOfAs = new A[5];for (int i = 0; i < 5; ++i){
arrayOfAs[i] = A(3);}但這會爆炸得很厲害。因為新的A對象創建(使用A(3)(調用)在for循環迭代完成,這意味著內部myArray其中A實例獲取delete []-艾德所以我覺得我的語法肯定錯了?我想有幾個修復方法看起來有點過火,我希望避免:創建副本構造函數A.使用vector<int>和vector<A>所以我不用擔心這些。而不是arrayOfAs是一個數組A對象,它是否是A*指南針。我認為這只是一些初學者的事情,在嘗試動態分配具有內部動態分配的事物時,語法實際上是有效的。(還有,風格批評很受歡迎,因為我做C+已經有一段時間了。)為未來觀眾提供最新信息:下面的所有答案都很有幫助。因為示例代碼和有用的“規則4”,Martin的代碼被接受了,但我確實建議閱讀它們。一些是好的,簡潔的陳述什么是錯誤的,還有一些正確地指出了如何和為什么vector這是個很好的方法。
3 回答

喵喔喔
TA貢獻1735條經驗 獲得超5個贊
typedef std::vector<int> A;typedef std::vector<A> AS;

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
int[]
vector<int>
boost::shared_array<>
.
delete
- delete
- 3 回答
- 0 關注
- 669 瀏覽
添加回答
舉報
0/150
提交
取消