#include <iostream>
class A {};
class B {};
class C : public A, public B {
int a;
};
int main() {
std::cout << sizeof(C) << std::endl;
return 0;
}
如果我使用cl编译上面的代码,输出是'8'。当使用g++编译时,输出将是'4'。
如果没有多重继承,两个编译器的输出都是'4'。
谢谢。
这就是为什么它是8字节的答案:为什么空基类优化不起作用?
解决方案是链接所有基类。为了简洁,我们可以这样写:
template <class Base = empty_base>
class A1 : public Base {};
template <class Base = empty_base>
class A2 : public Base {};
template <class Base =empty_base>
class A3 : public Base {};
class C : public A1<A2<A3> > { int c; };
您可以在"boost/operators.hpp"中找到此模式的更多代码