Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по конструктору копирования

18K
20 августа 2009 года
Avenger
25 / / 23.02.2007
подскажите пожалйста , от например у нас есть класс:
Код:
class Stack
{
private:
    enum{MAX=10};
    Item* pitems;
    int size;
    int top;
public:
    Stack(int n=10);
    Stack(const Stack & st);
    Stack& operator=(const Stack & st);
    ~Stack();
    ...
};

Код:
...
Stack::Stack(const Stack &st)
{
            //delete [] pitems; - суть вопроса
    pitems=new Item [st.size];
    size=st.size;
    top=st.top;
    for (int i=0; i<size; i++)
        pitems=st.pitems;
}
Stack& Stack::operator =(const Stack &st)
{
    if(this==&st) return *this;
    delete [] pitems;
    pitems=new Item [st.size];
    size=st.size;
    top=st.top;
    for (int i=0; i<size; i++)
        pitems=st.pitems;
    return *this;
}
...

так вот вопрос, подскажите пожалуйсто почему в конструкторе копирования я не имею права очистить память на которую указивает указатель pitems, мы же и так будем выделять новый блок памяти и тот на которий укззывает указатель pitems в даный момент будет утерена не так ли?? в книге етот нюанс не описан или я так читал :D, но етот нюанс хотелось бы понимать:confused:. Спасибо зарание! извините за ломаний руский :)
18K
20 августа 2009 года
Avenger
25 / / 23.02.2007
оффтоп:
чото я переседел за компом слишком долго, дико извеняюсь , перенесите вопрос в С++ пожалйсто, ещо раз извеняюсь!!!!:(
1.9K
20 августа 2009 года
GreenRiver
451 / / 20.07.2008
Ну наверное просто потому что это конструктор и никакие поля ещё не инициализированы, что вы хотите в таком случае удалить?
А при перегрузке оператора присваивания Вы уже имеете дело с созданным объектом, поэтому pitem удаляется.
18K
21 августа 2009 года
Avenger
25 / / 23.02.2007
спасибо!!!, кажысь понял:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог