Вот собственно сам код:
| Код | #include <iostream> #include <assert.h>
using namespace std;
class Array { friend ostream& operator<<(ostream&,Array&); public: Array(int = 10); ~Array(); static int GetarrayCount(); static int arrayCount; int Getarraysize() const; private: int size; int* ptr; };
int Array::arrayCount = 0;
int main() { cout<<"Кол-во созданных объектов: "<<Array::GetarrayCount()<<endl; Array integers1(7), integers2; cout<<"Кол-во созданных объектов: "<<Array::GetarrayCount()<<endl<<endl;
cout<<"Размер масива integers1 равен "<<integers1.Getarraysize()<<endl; cout<<"Массив после задания начальных значений: "<<integers1<<endl<<endl;
cout<<"Размер массива integers2 равен "<<integers2.Getarraysize()<<endl; cout<<"Массив после задания начальных значений: "<<integers2<<endl;
return 0; }
Array::Array(int arraysize) { ++arrayCount; size = arraysize; ptr = new int[size]; assert(ptr!=0); for(int x = 0;x<size;x++) // Инициализация элементов массива ptr[x] = 0; } Array::~Array() { arrayCount--; delete [] ptr; } int Array::GetarrayCount() {return arrayCount;} int Array::Getarraysize() const {return size;} ostream& operator<<(ostream& out, Array& arr) { for(int x = 0;x<arr.size;x++) out<<arr.ptr[x]<<' '; out<<endl; return out; }
|
Вопрос в следующем. в main печатаю массив integers1, размером new = int[5], все нормально, затем печатаю integers2, размером new int[10], массив печатается и выдается сообщение об ошибке;
|