Что на самом деле хранится в одном байте пустого класса C ++?

If you will create an object of a totally empty class it's size will be >0 as guaranteed by the standard (in order two objects have different addresses). But I'm interested what is stored in this byte (some value, index, address)? Is there some way to know this?

0
nl ja de
Если вы наследуете его. Тогда размер может стать нулевым, поэтому ваше предположение больше нуля не выполняется.
добавлено автор Martin York, источник
@Slava Ok. Спасибо за подсказку. Фактически размер должен быть больше нуля. Но вопрос остается
добавлено автор MainstreamDeveloper00, источник
Прежде всего, кто сказал, что гарантированно будет ровно 1 байт?
добавлено автор Slava, источник
@HarryCater ваш следующий вопрос будет, какое целое передается перегруженному постфиксному оператору ++? Разве это значение отличается от оператора??
добавлено автор Slava, источник
Он не определен. Эрго, ты не должен нравиться.
добавлено автор StoryTeller, источник
@slava мои мысли точно, хотя sizeof (Bogus) возвращает 1, используя мою версию g ++ для чего бы то ни было ... Я бы предположил, что это sizeof (void *) в противном случае
добавлено автор Foon, источник

4 ответы

Он имеет тот же (неизвестный, неопределенный) контент, что и любой другой наполнитель, который используется для заполнения пробелов между, например, char и int . И вместе с «зазором-заполнителем», у него нет никакой цели, кроме как «убедиться, что размещение этих данных не работает». Если размер пустого класса равен нулю, массив из двух таких объектов будет занимать нулевые байты, и оба объекта будут иметь один и тот же адрес, что сделает вещи довольно странными для всех вещей.

1
добавлено

Технически, что хранится там Unspecified .
Короче говоря, это остается за реализацией, и для реализации не нужно документировать поведение.

1
добавлено

Ничего, это просто прокладка. Вы не можете зависеть от сохраненного там значения или даже от того, что есть какое-либо значение вообще, как и с любым другим дополнением.

0
добавлено

Если я правильно помню, стандарт гарантирует, что объект пустого класса займет место. Он не говорит точно, сколько места, ни того, что там хранится, так что это зависит от исполнителя.

Если вы хотите знать, что находится в данном пространстве, вы можете просто переосмыслить его и посмотреть.

0
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest