Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение свойств объекта не активируя его 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 16:00
Проверка объекта после его уничтожения AHTuKiLLeR Общие вопросы Delphi 1 19.06.2009 10:43