Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 28.02.2011, 02:04   #11
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
Репутация: 27
По умолчанию

Цитата:
Сообщение от Janym Посмотреть сообщение
Копия не вызовет конструктор, а только деструктор.

Не понятно другое, зачем по мимо временной переменной r компилятор ещё где-то создаёт переменную..
спросите компилятор, g++ дает такой список
Код:
Constr MyBase1 0xbfa6fd12
Constre MyBase2 0xbfa6fd12
Constre base3 0xbfa6fd12
Constr MyDelClass 0xbfa6fd12
addr of o: 0xbfa6fd12
addr of r: 0xbfa6fd13
Destr base3 0xbfa6fd13
Destr MyBase2 0xbfa6fd13
Destr MyBase1 0xbfa6fd13
Destr MyDelClass 0xbfa6fd12
Destr base3 0xbfa6fd12
Destr MyBase2 0xbfa6fd12
Destr MyBase1 0xbfa6fd12
alex_x_x вне форума   Ответить с цитированием
Старый 28.02.2011, 02:06   #12
onewho
Участник клуба
 
Регистрация: 29.09.2010
Адрес: С-Пб
Сообщений: 636
Репутация: 86

icq: 3424572
По умолчанию

Цитата:
Сообщение от Janym Посмотреть сообщение
Код:
MyBase3 o1
MyDelClass o2;
o1 = o2;
никаких лишних деструкторов не вызывается.
а ты попробуй
Код:
MyBase3 o1;
MyBase3 o2=o1;
onewho вне форума   Ответить с цитированием
Старый 28.02.2011, 02:13   #13
Janym
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 22
Репутация: 10
По умолчанию

Цитата:
спросите компилятор, g++ дает такой список
Код:


Constr MyBase1 0xbfa6fd12
Constre MyBase2 0xbfa6fd12
Constre base3 0xbfa6fd12
Constr MyDelClass 0xbfa6fd12
addr of o: 0xbfa6fd12
addr of r: 0xbfa6fd13
Destr base3 0xbfa6fd13
Destr MyBase2 0xbfa6fd13
Destr MyBase1 0xbfa6fd13
Destr MyDelClass 0xbfa6fd12
Destr base3 0xbfa6fd12
Destr MyBase2 0xbfa6fd12
Destr MyBase1 0xbfa6fd12
А вот это как раз верный результат. Значит, Студийный компилятор чё-то мудрит..
Janym вне форума   Ответить с цитированием
Старый 28.02.2011, 02:17   #14
Janym
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 22
Репутация: 10
По умолчанию

Цитата:
MyBase3 o1;
MyBase3 o2=o1;
Проверил, тоже всё ок, два деструктора как и должно быть.
Janym вне форума   Ответить с цитированием
Старый 28.02.2011, 02:21   #15
onewho
Участник клуба
 
Регистрация: 29.09.2010
Адрес: С-Пб
Сообщений: 636
Репутация: 86

icq: 3424572
По умолчанию

2 деструктора и 1 конструктор! (без КК)
onewho вне форума   Ответить с цитированием
Старый 28.02.2011, 02:26   #16
Janym
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 22
Репутация: 10
По умолчанию

Так оно и есть 2 деструктора и 1 констр.
Janym вне форума   Ответить с цитированием
Старый 28.02.2011, 04:07   #17
Obey-Kun
Линуксоид
Профессионал
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Адрес: Москва
Сообщений: 1,403
Репутация: 165

icq: 323216
По умолчанию

Цитата:
может ты имел ввиду void myFunc(const MyClass &x) ?
да, ошибся под шафе
__________________
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума   Ответить с цитированием
Старый 28.02.2011, 04:12   #18
Obey-Kun
Линуксоид
Профессионал
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Адрес: Москва
Сообщений: 1,403
Репутация: 165

icq: 323216
По умолчанию

Народ, да что вы тупите! Вызывается копирующий конструктор! Если в классе нет явно объявленных копирующих конструкторов, то класс имеет неявно объявленный копирующий конструктор.

Неявно объявленный копирующий конструктор вида Class(const Class &other), который генерирует компилятор, делает для всех полей класса поле=other.поле. Если ты объявишь Class(const Class &other) и сделаешь там вывод типа "Вызван компирующий конструктор Class", то всё поймёшь

А конструктор без параметров сюда никакого отношения не имеет. Он используется в других случаях.
__________________
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума   Ответить с цитированием
Старый 28.02.2011, 04:45   #19
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
Репутация: 27
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
Народ, да что вы тупите! Вызывается копирующий конструктор! Если в классе нет явно объявленных копирующих конструкторов, то класс имеет неявно объявленный копирующий конструктор.

Неявно объявленный копирующий конструктор вида Class(const Class &other), который генерирует компилятор, делает для всех полей класса поле=other.поле. Если ты объявишь Class(const Class &other) и сделаешь там вывод типа "Вызван компирующий конструктор Class", то всё поймёшь

А конструктор без параметров сюда никакого отношения не имеет. Он используется в других случаях.
ВНЕЗАПНО ты четвертый в теме, кто сказал про копирующий конструктор
alex_x_x вне форума   Ответить с цитированием
Старый 28.02.2011, 04:48   #20
Obey-Kun
Линуксоид
Профессионал
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Адрес: Москва
Сообщений: 1,403
Репутация: 165

icq: 323216
По умолчанию

Ну просто надо было пояснить насчёт его неявного объявления, этого никто не сделал.
__________________
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение свойств объекта не активируя его ndvikulov Microsoft Office Excel 16 16.09.2010 20:14
Передача метода объекта. the_deer_one Общие вопросы C/C++ 8 09.09.2010 15:07
Можно ли в макрос передать имя объекта, его вызывающего buagbu Microsoft Office Excel 3 16.04.2010 08:54
Передача объекта в функцию Юра_YUYU Общие вопросы C/C++ 14 18.01.2010 17:00
Проверка объекта после его уничтожения AHTuKiLLeR Общие вопросы Delphi 1 19.06.2009 10:43


22:29.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.