Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Почему создаются новые объекты? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как нарисовать http://www.cyberforum.ru/cpp-beginners/thread245002.html
Необходимо с помощью кода нарисовать 5 квадратов, расположенные друг за другом (это будут кабинеты), а в каждом квадрате написать допустим номер кабинета или какие процедуры там проводят. Затем около...
C++ Наследование Используя механизм наследования реализовать иерархию: фигура->круг ..........->треугольник ..........->квадрат (все стрелки отходят... http://www.cyberforum.ru/cpp-beginners/thread244999.html
Написать функцию, которая удваивает каждый символ строки C++
Народ,спасайте! Не могу написать программу! Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от...
C++ Шаблонная функция С++
Помогите пожалуйсто понять ошибку Используется шаблонная функция в первом вызове она отображает значение типа int во втором типа double ошибку пишет в 10 строке. Вот такую D:\C++\C++8\4\123.cpp(10)...
C++ Тренировка http://www.cyberforum.ru/cpp-beginners/thread244961.html
Так как я только недавно стал постигать азы с++ мне трудно пока учить синтаксис и тем более все его нюансы. Поэтому я считаю, что постоянные тренировки мне необходимы. Мне нужен такой ресурс на...
C++ Как печатать в cout << " РУССКИМИ БУКВАМИ" Собственно проблема не втом чтобы наляпать в кауте русскими буквами, а чтобы потом эти русские буквы вывело на екран, а не абракадабру..... подробнее

Показать сообщение отдельно
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
19.02.2011, 11:00  [ТС]
lemegeton, а почему так копируете строки
C++
1
2
3
4
5
  
void SetData(const char *string) {
    delete string_;
    string_ = strcpy(new char[strlen(string) + 1], string);
 }
почему просто указатель не присвоить?

Вы же не ссылку возвращаете, и не указатель, а копию данных. Вот и создается копия класса data, которая удаляется после возвращения значения.
Тогда получается что в этом случае деструктор должен вызываться 2 раза
C++
1
2
3
4
5
        data operator= (data& v)
        {
                str = v.str;
                return data(str);
        }
один раз чтобы возвратить объект (возвращаем же копию данных). А второй раз - удалить data (str)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru