c++ - 如果类包含基类的成员,编译器可以利用空基优化吗?

标签 c++ language-lawyer

考虑

struct base {};
struct child : base {};

众所周知,sizeof(child) 可以通过 empty base 优化为 1。

现在,考虑

struct base {};
struct child : base {base b;};

编译器现在可以应用空基优化,还是必须 sizeof(child) 至少为 2?

引用:http://en.cppreference.com/w/cpp/language/ebo

最佳答案

不,它不能。来自同一引用:

Empty base optimization is prohibited if one of the empty base classes is also the type or the base of the type of the first non-static data member

因此 sizeof(child) >= 2.

关于c++ - 如果类包含基类的成员,编译器可以利用空基优化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908996/

相关文章:

c++ - 在 linux 上的 c++ 代码中通过 sendfile() 复制的速度是多少?

c++ - OpenThread 和关闭多个线程句柄

c++ - 合成析构函数是否会破坏堆上分配的内存?

c++ - 并发删除和字段访问

C++ 可变函数语法

c++ - 在另一个成员函数的尾随返回类型中获取推导成员函数的 decltype 是否格式正确?

c++ - 嵌套名称说明符中第一个 namespace 名称的名称查找?

c++ - cpp show result 依赖于之前的结果

c++ - C++库的可维护性

c++ - 为什么 C++ 中没有运算符 ~=?