![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
ИМХО немного не так. Локальные объекты это те, которые объявлены в local scope. Соответственно они могут иметь как automatic storage duration, так и static storage duration. --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
LPBOY
+1 Сгоряча не оговорил все возможные варианты ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
serendip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
Ужас какой...
![]() ![]() И действительно, пр-мма вышла за область выделенной памяти и начала уже буквы выводить ![]() Забавно..В 1-ом сообщении от BreakPointMAN написано самое главное ![]() Ну с трудом как-то верилось.. ![]() Просто я не видела между динамически выделенной памятью и конструктором копирования никакой связи. Прошу прощенья.. ![]() Это сообщение отредактировал(а) serendip - 28.1.2006, 20:39 |
|||
|
||||
blackofe |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
доусложним усложненную программу ![]()
результат:
- была вызвана функция foo, внутри которой был создан объект типа A (первая выведенная запись). - данный объект был возвращен из функции foo оператором return. при этом используется конструктор копирования, который мы сейчас доопределили явно (у тебя он не был определен, и за тебя его создал компилер) - вторая строчка вывода. обрати внимание - был создан новый объект - совершенно самостоятельный. - далее - выход из области видимости для первого объекта. для него вызывается деструктор (третья строчка вывода). - переменная s - и есть наш новый объект, который был создан путем копирования другого объекта, созданного внутри функции foo. при выходе из области видимости (функции main) для этого объекта вызывается деструктор. опять же можно обратить внимание, что деструктор вызывается для объекта, созданного конструктором копии. так что все правильно. и никакого криминала в возвращении объекта функцией нет. Это сообщение отредактировал(а) blackofe - 2.2.2006, 21:11 |
||||||||||
|
|||||||||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
blackofe Я с этим разобрался. В тот же день я проделал примерно тот же самый код, что и ты привел. Что мы имеем. Двойное создание и копирование класса. При наследовании класса, все время нужно поддерживать конструктор копирования.
И это все благодоря элементарной человеческой лени при написании кода. Я ленив, но не до такой степени. -------------------- Пролетал мимо. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Fin
Знаешь, это возражения примерно из той же оперы, что и «никогда не пользуйтесь указателями, а то в вашем проекте заведутся маленькие злобные существа — меморилики». Возвращать класс по значению или на куче — исключительно вопрос семантики данного класса.
Элементарная человеческая лень привела к появлению Java и C#, где о таких вещах думать не надо. И это хорошо. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |