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

C++ 運算符重載完善:拷貝構造、賦值運算符返回引用、加法邊界處理

     編輯:程式設計疑難解答

原代碼問題

  • operator= 返回 void,應返回 Array& 支持鏈式賦值。
  • operator+ 分配內存用 l(當前對象長度)而非 BIG(最大長度),導致越界。
  • 拷貝構造函數參數非 const 引用。

修正后關鍵代碼

class Array {
    int *a; int l;
public:
    Array() : a(nullptr), l(0) {}
    Array(int x) : a(new int[x]), l(x) {
        for (int i=0; i> a[i];
    }
    ~Array() { delete[] a; }
    
    // 拷貝構造
    Array(const Array& rhs) : a(new int[rhs.l]), l(rhs.l) {
        for (int i=0; i

關鍵修正點總結

  1. operator= 返回 Array&,處理自賦值,釋放舊內存再分配新內存。
  2. operator+ 分配 maxLen,訪問時檢查下標邊界,超出視為 0。
  3. 構造/拷貝參數加 const,支持臨時對象綁定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved