如何使用重载操作符合并两个数组?
问题描述:
class Array
{
public:
Array(int sze)// default constructor
{
size = sze;
ptr = new int [size];
}
//.......
Array operator += (Array & a1, Array & a2)
{
//....
return 0;
}
例如,如果ARRAY1包含 1,2,5,9,12,15 和数组2包含 3,图4,图7,图13,19,21,25 那么语句 ARRAY1的执行之后+ =数组2 数组2将保持不变,和ARRAY1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25,如何使用重载操作符合并两个数组?
答
Array& operator += (const Array & a2)
{
//....
return this;
}
它应该采取1个参数。
一个简单的方法是到this->ptr
所有内容的内容从临时数组复制到一个临时数组,然后删除PTR的内容,以适应旧内容+新内容,this->ptr
分配更大的内存,然后复制和a2的内容,最后返回this
。
通过const引用取得'a2',并在发生异常时释放旧分配之前执行新分配。 – 2015-03-08 23:37:49