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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 28.02.2011, 20:09   #51
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
upd: ничего странного:
Цитата:
msvs все правильно делает, просто видимо добавляет в класс какие-то скрытые поля, которые делают его размер ненулевым. Если в каждый класс добавить хотя бы одно поле, результат в gcc будет таким же.
Ну, вообще говоря, всё же странно. Во-первых, что за скрытые поля? Во-вторых, почему размером всего в один байт? Для чего это может пригодиться? В третьих, что же с выравниванием? Если добавить хотя бы одно поле, то gcc сместит положение второго класса, но адрес будет выровнен

...

Хм, нет, я ошибся, он его не выравнивает, но нужно добавить по одному полю в оба класса. В любом случае это странно, классы не должны содержать ничего лишнего, теоретически, во всяком случае.

Последний раз редактировалось netrino; 28.02.2011 в 20:19.
netrino вне форума Ответить с цитированием
Старый 28.02.2011, 20:21   #52
Janym
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 22
По умолчанию

Цитата:

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
upd: ничего странного:
Цитата:
msvs все правильно делает, просто видимо добавляет в класс какие-то скрытые поля, которые делают его размер ненулевым. Если в каждый класс добавить хотя бы одно поле, результат в gcc будет таким же.
Ну, вообще говоря, всё же странно. Во-первых, что за скрытые поля? Во-вторых, почему размером всего в один байт? Для чего это может пригодиться? В третьих, что же с выравниванием? Если добавить хотя бы одно поле, то gcc сместит положение второго класса, но адрес будет выровнен
Думаю, что ничего он не вставляет. А просто из-за сложного наследования объект разбивает на несколько объектов
Janym вне форума Ответить с цитированием
Старый 28.02.2011, 20:34   #53
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

А если деструкторы сделать виртуальными? (хотя вряд ли это что-то поменяет, конечно)
(речь о кол-ве вызванных деструкторов)

Цитата:
Ну, вообще говоря, всё же странно. Во-первых, что за скрытые поля? Во-вторых, почему размером всего в один байт? Для чего это может пригодиться? В третьих, что же с выравниванием? Если добавить хотя бы одно поле, то gcc сместит положение второго класса, но адрес будет выровнен

...

Хм, нет, я ошибся, он его не выравнивает, но нужно добавить по одному полю в оба класса. В любом случае это странно, классы не должны содержать ничего лишнего, теоретически, во всяком случа
Наверн он представляет как-то так...
Код:
class C
{ 
    A parent1;
    B parent2;
    // Поля объекта C.
};
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 28.02.2011 в 20:42.
Obey-Kun вне форума Ответить с цитированием
Старый 28.02.2011, 20:47   #54
Janym
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 22
По умолчанию

Цитата:
А если деструкторы сделать виртуальными? (хотя вряд ли это что-то поменяет, конечно)
(речь о кол-ве вызванных деструкторов)
Помогло )
При чём если виртуальный деструктор будет хотя бы в одном из базовых.
Janym вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS