![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
daorus |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 30.10.2010 Пользователь №: 2163 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#13
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
сам в шоке до сих пор
|
|
|
Влад |
![]()
Сообщение
#14
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: ![]() ![]() ![]() |
daorus, пустой класс имеет размер 1 байт. Это какие-то заморочки, необходимые компилятору (детали не знаю) Это вытекает из простого требования: каждый объект в памяти должен иметь уникальный адрес. Рассмотри, например, такую конструкцию: Если бы sizeof(A) был бы строго равен нулю, каковы были бы &my_array[0], &my_array[1] и так далее до &my_array[99]? Стандарт языка ведь требует, чтобы элементы массива были упакованы плотно, без пустот между ними - на этом строится адресная арифметика. А общий размер массива (sizeof(my_array))? А каковы были бы адреса переменных, объявленных "до" и "после" массива?Поэтому размер любого объекта (даже "пустого" класса) - не менее 1 байта (а более - делать можно, но весьма бессмысленно, ибо пустой расход памяти). Как только же класс A наследуется от QObject, или же наоборот - от него наследуется какой-то класс (пусть A1, и например, непустой), - конечный класс становится заведомо "непустым", и лишние байты компилятору уже не нужны. Это называется "оптимизацией пустой базы" или "оптимизацией пустого базового класса" - empty base optimization. |
|
|
Алексей1153 |
![]()
Сообщение
#15
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Влад, понятно
![]() |
|
|
kwisp |
![]()
Сообщение
#16
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
#1. что происходит с int a в inept, когда я создаю два экземпляра ine? тут вопрос неосвещенным остался. по идее int a рождается в стеке и героически умирает тут же, и нет никакой разницы сколько обЪектов ine создается. Хотя умный компилятор может и рождать ничего не будет, - оптимизирует вызов к примеру и не будет создавать лишнюю неиспользуемую переменную. Хотя там предупреждение должно быть что она неиспользуемая. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 6.6.2025, 12:34 |