这是完整的题目截图,六小时截止,希望得到各位的帮助,谢谢大家
你的题目有错误,拷贝构造函数的参数和析构函数名都写错了。
dynamicArray2D类代码如下:
class dynamicArray2D :public dynamicArray {
public:
dynamicArray2D();
dynamicArray2D(int* const, int col, int vol); //col为行数, vol为列数
dynamicArray2D(const dynamicArray2D&);
~dynamicArray2D();
void showArray() const; // 以行列形式输出一个二维数组
friend ostream& operator << (ostream& os, dynamicArray2D& obj);
private:
int** mArray;
int mRol, mCol;
static const int INC;
};
const int dynamicArray2D::INC = 8;
dynamicArray2D::dynamicArray2D()
{
mArray = new int* [INC];
for (int i = 0; i < INC; i++)
mArray[i] = new int[INC];
mRol = INC;
mCol = INC;
}
//col为行数, vol为列数
dynamicArray2D::dynamicArray2D(int* const p, int col, int vol)
{
int i, j, k=0;
mArray = new int*[col];
for (i = 0; i < col; i++)
mArray[i] = new int[vol];
mRol = col;
mCol = vol;
for (i = 0; i < col; i++)
{
for (j = 0; j < vol; j++)
{
mArray[i][j] = p[k];
k++;
}
}
}
dynamicArray2D::dynamicArray2D(const dynamicArray2D& p)
{
this->mRol = p.mRol;
this->mCol = p.mCol;
this->mArray = new int* [mRol];
for (int i = 0; i < mRol; i++)
{
mArray[i] = new int[mCol];
for (int j = 0; j < mCol; j++)
{
mArray[i][j] = p.mArray[i][j];
}
}
}
dynamicArray2D::~dynamicArray2D()
{
for (int i = 0; i < mRol; i++)
{
delete[] mArray[i];
mArray[i] = 0;
}
delete[] mArray;
mArray = 0;
}
void dynamicArray2D::showArray() const
{
int i, j;
for (i = 0; i < mRol; i++)
{
for (j = 0; j < mCol; j++)
cout << setw(6) << mArray[i][j] ;
cout << endl;
}
}
ostream& operator << (ostream& os, dynamicArray2D& obj)
{
int i, j;
for (i = 0; i < obj.mRol; i++)
{
for (j = 0; j < obj.mCol; j++)
os << setw(6) << obj.mArray[i][j];
os << endl;
}
return os;
}
完整代码:
#include <iostream>
#include <iomanip>
using namespace std;
class myArray {
public:
virtual void showArray() const = 0;
};
class dynamicArray : public myArray {
public:
dynamicArray();
dynamicArray(int* const, int);
dynamicArray(const dynamicArray&);
~dynamicArray();
void showArray() const;
int operator [](int);
private:
int* array;
int length;
friend ostream& operator << (ostream& os, const dynamicArray&);
static const int INC;
};
const int dynamicArray::INC = 8;
dynamicArray::dynamicArray()
{
array = new int[INC];
length = INC;
}
dynamicArray::dynamicArray(int* const p, int len)
{
length = INC;
while (len > this->length)
length = length + INC;
array = new int[length]();
for (int i = 0; i < len; i++)
array[i] = p[i];
}
dynamicArray::dynamicArray(const dynamicArray& source)
{
this->length = source.length;
this->array = new int[length];
for (int i = 0; i < length; i++)
array[i] = source.array[i];
}
dynamicArray :: ~dynamicArray()
{
delete array;
}
int dynamicArray :: operator [](int i)
{
return array[i];
}
void dynamicArray::showArray() const
{
for (int i = 0; i < length; i++) {
cout << setw(6) << array[i];
if ((i + 1) % 10 == 0)
cout << endl;
};
}
ostream& operator << (ostream& os, dynamicArray& obj)
{
obj.showArray();
return os << endl;
}
class dynamicArray2D :public dynamicArray {
public:
dynamicArray2D();
dynamicArray2D(int* const, int col, int vol); //col为行数, vol为列数
dynamicArray2D(const dynamicArray2D&);
~dynamicArray2D();
void showArray() const; // 以行列形式输出一个二维数组
friend ostream& operator << (ostream& os, dynamicArray2D& obj);
private:
int** mArray;
int mRol, mCol;
static const int INC;
};
const int dynamicArray2D::INC = 8;
dynamicArray2D::dynamicArray2D()
{
mArray = new int* [INC];
for (int i = 0; i < INC; i++)
mArray[i] = new int[INC];
mRol = INC;
mCol = INC;
}
//col为行数, vol为列数
dynamicArray2D::dynamicArray2D(int* const p, int col, int vol)
{
int i, j, k=0;
mArray = new int*[col];
for (i = 0; i < col; i++)
mArray[i] = new int[vol];
mRol = col;
mCol = vol;
for (i = 0; i < col; i++)
{
for (j = 0; j < vol; j++)
{
mArray[i][j] = p[k];
k++;
}
}
}
dynamicArray2D::dynamicArray2D(const dynamicArray2D& p)
{
this->mRol = p.mRol;
this->mCol = p.mCol;
this->mArray = new int* [mRol];
for (int i = 0; i < mRol; i++)
{
mArray[i] = new int[mCol];
for (int j = 0; j < mCol; j++)
{
mArray[i][j] = p.mArray[i][j];
}
}
}
dynamicArray2D::~dynamicArray2D()
{
for (int i = 0; i < mRol; i++)
{
delete[] mArray[i];
mArray[i] = 0;
}
delete[] mArray;
mArray = 0;
}
void dynamicArray2D::showArray() const
{
int i, j;
for (i = 0; i < mRol; i++)
{
for (j = 0; j < mCol; j++)
cout << setw(6) << mArray[i][j] ;
cout << endl;
}
}
ostream& operator << (ostream& os, dynamicArray2D& obj)
{
int i, j;
for (i = 0; i < obj.mRol; i++)
{
for (j = 0; j < obj.mCol; j++)
os << setw(6) << obj.mArray[i][j];
os << endl;
}
return os;
}