考虑以下代码:
#include <iostream>
#include <type_traits>
class Base
{
public: static int f() {return 42;}
};
class Derived : public Base
{
protected: int x;
};
class NotDerived
{
protected: int x;
};
int main()
{
std::cout<<sizeof(Base)<<std::endl;
std::cout<<sizeof(Derived)<<std::endl;
std::cout<<sizeof(NotDerived)<<std::endl;
return 0;
}
使用 g++ 4.7 -O3,它会打印:
1
4
4
如果我理解得很好,这意味着启用了空基类优化。
但是我的问题涉及运行时开销:由于应该构造/销毁相应的对象,Derived
与对象相比是否有任何开销创建(和销毁)对象?NotDerived
Derived
Base