Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > при передачи по копии прога вылетает


Автор: yngwie19 10.10.2008, 15:24
Вот собственно  сам код:
Код

#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], массив печатается и выдается сообщение об ошибке;

Автор: vinter 10.10.2008, 16:03
напиши CopyConstructor у тебя при копирование копируется указатель, анадо копировать значение. В результате у тебя два раза пытается удалить одну и ту же паямть. Первый раз удачно, второй ты сам видел smile

Автор: yngwie19 10.10.2008, 16:20
vinter, Я не понял почему при копировании, где тут копирование. 
Напиши пожалуйста пример что ты имеешь в виду.

P.S: кстати если объект передавать по ссылке, то сбоев нетю Почему так?

Автор: vinter 10.10.2008, 16:35
Цитата(yngwie19 @  10.10.2008,  17:20 Найти цитируемый пост)
P.S: кстати если объект передавать по ссылке, то сбоев нетю Почему так?

все просто, потому что объект не копируется а передается по ссылке

Цитата(yngwie19 @  10.10.2008,  17:20 Найти цитируемый пост)
vinter, Я не понял почему при копировании, где тут копирование. 

Цитата

 при передачи по копии прога вылетает 

ты там сам с собой разберись плиз smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)