![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 29.08.2011
Сообщений: 14
|
![]()
Объясните пожалуйсто почему программа выводит не "Destructor NULL" а "Destructor one". Ведь по идеи локальный объект вызывает деструктор и соответственно объект в векторе должен изменится так как это сылка на локальный объект.
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
1) А знаете, можно использовать шрифт ещё крупнее.
2) При вызове push_back создаётся локальная копия переданного аргумента S("one"). Она, в свою очередь, копируется во внутреннюю структуру вектора, после чего вызов push_back завершается и она дохнет, выводя "Destructor". Перед смертью она успела изменить своё значение c, но об этом никто и никогда не узнает. После этого Вы обращаетесь к копии, которую положили в вектор - в ней c по-прежнему указывает на строку "one". |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Код:
Вектор содержит копию временного объекта. Сам временный объект сдохнет сразу же, как только завершится операция, в которой он фигурирует. Код:
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 29.08.2011
Сообщений: 14
|
![]()
Abstraction и _Bers спасибо, уверен что я вас правильно понял. Для эксперимента дополнил структуру вот этими строками
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что происходит с сайтами? | Smitt&Wesson | Свободное общение | 14 | 14.03.2012 11:11 |
что происходит в моем компе?! | majestic2000 | Безопасность, Шифрование | 8 | 22.10.2011 10:35 |
Что происходит во время Win+D? | Altera | Общие вопросы Delphi | 13 | 15.12.2009 05:16 |
Что происходит с локальным сервером??? | just me | PHP | 13 | 14.04.2009 14:01 |