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

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

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


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

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

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

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

...

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

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

Цитата:

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

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

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

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

...

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

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

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

Опции темы

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

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


23:30.


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