#include
#include "common/log.h"
#include
#include
#include
#include
#include
using namespace AdsonLib;
//空基类占用1字节
struct Base{
};
//空基类优化: 在继承中让空基类占0字节
struct Children{
Base base;
int other;
};
//继承,sizeof(Children2) == 4
struct Children2: public Base{
int other;
};
//sizeof(Children3) == 4
struct Children3{
[[no_unique_address]]Base base;
int other;
};
int main(int argc, char *argv[]) {
static_assert(sizeof(Base) == 1);
static_assert(sizeof(Children) == 8); //4字节对齐
static_assert(sizeof(Children2) == 4); //4字节对齐
static_assert(sizeof(Children3) == 4); //4字节对齐
LOG(INFO) << "sizeof(base): " << sizeof(Base);
LOG(INFO) << "sizeof(Children): " << sizeof(Children);
LOG(INFO) << "sizeof(Children2): " << sizeof(Children2);
LOG(INFO) << "sizeof(Children3): " << sizeof(Children3);
}