Форум программистов, компьютерный форум 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 << " РУССКИМИ БУКВАМИ" Собственно проблема не втом чтобы наляпать в кауте русскими буквами, а чтобы потом эти русские буквы вывело на екран, а не абракадабру..... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.02.2011, 13:24
В случае
C++
1
2
3
4
5
data operator= (data& v)
{
        str = v.str;
        return *this;
}
будет создан временный объект, копия *this, который будет возвращён и удалён. В случае
C++
1
2
3
4
5
data operator= (data& v)
{
        str = v.str;
        return data (str);
}
вы вручную создаёте временный объект (data (str) - объект без имени), который будет скопирован в точку вызова, а потом удалён.

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