C ++ POD структурное наследование? Существуют ли какие-либо гарантии относительно структуры памяти производных элементов?
Допустим, у меня естьstruct RGB
и я хочу создатьstruct RGBA
, который наследуетRGB
:
struct RGB {
unsigned char r;
unsigned char g;
unsigned char b;
};
struct RGBA: RGB {
unsigned char a;
};
Оба будут использоваться для чтения несжатых данных изображения:
RGBA *pixel=static_cast<RGBA *>(image->uncompressed_data);
Вопрос: Безопасно ли это относительно расположения памятиstruct RGBA
? Кто-нибудь гарантирует, что:
unsigned char a
приходит послеRGB struct
(не раньше, чем)Между отступами нетstruct RGB
и параметр изstruct RGBA
?будут#pragma pack
помочь здесь? Это все о расположении памяти во время наследования.