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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как нарисовать http://www.cyberforum.ru/cpp-beginners/thread245002.html
Необходимо с помощью кода нарисовать 5 квадратов, расположенные друг за другом (это будут кабинеты), а в каждом квадрате написать допустим номер кабинета или какие процедуры там проводят. Затем около каждого кабинета должен идти отсчёт времени в обратном порядке... допустим в одном кабинете 20 минут, в другом 10 минут и так далее... Может кто-нибудь знает как это реализовать. Заранее спасибо
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) : error C2782: 't __cdecl Max5(t ,t)' : template parameter 't' is ambiguous could be 'int' or 'double' Вот код #include <iostream> using namespace std; template <class t>
C++ Тренировка http://www.cyberforum.ru/cpp-beginners/thread244961.html
Так как я только недавно стал постигать азы с++ мне трудно пока учить синтаксис и тем более все его нюансы. Поэтому я считаю, что постоянные тренировки мне необходимы. Мне нужен такой ресурс на котором есть множество задачек на разные темы - от простых (хеллоу ворлд) до сложных (на будующие). Пока таких ресурсов мною обнаружено не было и поэтому я прошу у вас помощи, если вы знаете, что либо...
C++ Как печатать в cout << " РУССКИМИ БУКВАМИ" Собственно проблема не втом чтобы наляпать в кауте русскими буквами, а чтобы потом эти русские буквы вывело на екран, а не абракадабру..... подробнее

Показать сообщение отдельно
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36
19.02.2011, 10:32  [ТС]     Почему создаются новые объекты?
OMGHero, вы для того, чтобы вернуть объект, создаёте временный, а именно data (str). При возврате объекта вызывается конструктор копии, который копирует этот временный объект в точку вызова, чтобы он стал результатом операции присваивания. Но в функции ведь осталась изначальная копия этого объекта, и при выходе из функции все локальные переменные должны быть уничтожены, следовательно, будет вызван деструктор для этого временного объекта, который был создан в функции как data (str).
Да, этот механизм я понял. Функция создает один объект data (str), потом его уничтожает.
Не понятно что тут создается:
C++
1
2
3
4
5
6
 
 data operator= (data& v)
{
        str = v.str;
        return *this;
}
This не уничтожается. В обоих случаях при выполнении присваивания деконструктор вызывается только один раз. В превом случае понятно что саздается/удаляется (data(str)), во втором нет.
 
Текущее время: 02:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru