首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 一維物件陣列賦值:必須 new 實例化每個元素

     編輯:程式設計綜合問答

Employee emp[5] 僅分配 5 個 Employee 物件的**記憶體空間**,若無預設建構子或需參數初始化,必須顯式構造。

正確賦值

Employee emp[5]; // 僅原始記憶體
for (int i = 0; i < 5; i++) {
    emp[i] = Employee(/* 建構子參數 */); // 呼叫建構子並賦值 (複製/移動)
}
// 或使用指標陣列 + new
Employee* emp[5];
for (int i = 0; i < 5; i++) {
    emp[i] = new Employee(/* 參數 */);
}
// 使用完畢 delete
for (int i = 0; i < 5; i++) delete emp[i];

關鍵區別

  • Employee emp[5]:棟上連續物件,**自動析構**,適合簡單類型。
  • Employee* emp[5]:指標陣列,指向堆上物件,**手動管理生命週期**,適合多態/大物件/可選為空。
  • C++11 起推薦 std::vector<Employee> 或 std::vector<std::unique_ptr<Employee>> 替代原生陣列。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved