推 holymars:我看到了好恐怖的memeory leak new完delete掉是好習慣 03/30 23:42
以下要把兩陣列X,Y做這樣的運算 Z=(X+Y)*2
然後在main()裡面的 '=' 運算子多載無法作用
我是用DEV-C++
可以請教一下問題在哪嗎? 感謝!
#include <cstdlib>
#include <iostream>
using namespace std;
class Array
{ private:
int size;
int *data;
public:
Array(int s)
{ size=(s>0?s:10);
data=new int[size];
}
void setArray(int a[])
{ for(int i=0;i<size;i++)
data[i]=a[i];
}
Array & operator=(Array &right)
{ for(int i=0;i<size;i++)
data[i]=right.data[i];
return *this;
}
Array operator+(Array &op2)
{ int *a= new int[size];
for(int i=0;i<size;i++)
a[i]=data[i]+op2.data[i];
Array result(size);
result.setArray(a);
return result;
}
Array operator*(int k)
{ int *a=new int[size];;
for(int i=0;i<size;i++)
a[i]=data[i]*k;
Array result(size);
result.setArray(a);
return result;
}
void printArray()
{ for(int i=0;i<size;i++)
cout << data[i] << " ";
cout << endl;
}
};
int main(int argc, char *argv[])
{
Array X(10);
Array Y(10);
Array Z(10);
int i, ary[10];
cout << "Input array x:";
for(int i=0;i<10;i++) cin >> ary[i];
X.setArray(ary);
cout << "Input array y:";
for(int i=0;i<10;i++) cin >> ary[i];
Y.setArray(ary);
Z=(X+Y)*2;
cout << "Array z:";
Z.printArray();
system("PAUSE");
return EXIT_SUCCESS;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.193.244
※ fjf1980:轉錄至看板 Examination 03/30 23:02