编译下面的类
class Interface
{
virtual void doIt() = 0;
virtual ~Interface() = 0;
};
inline Interface::~Interface() {}
using gcc -fdump-class-hierarchy
.
gcc
emits
Class Interface
size=4 align=4
base size=4 base align=4
Interface (0x1a779c0) 0 nearly-empty
vptr=((& Interface::_ZTV9Interface) + 8u)
“近乎空”有何意义?这是什么意思?
C++ 有一种叫做“空基优化”的东西。如果一个类没有成员,那么它作为基类时不需要占用空间。为什么这很重要的一个例子是std::unary_function<T, U>
。它的存在是为了向您提供一组简单的类型定义。这些 typedef 不应该影响函子类的大小。
如果您有一个带有 vtable 指针的基类,则该指针很可能与派生类共享。您只需为派生类创建一个虚函数表,该虚函数表在基类的方法之后添加自己的方法。
您现在可以实现类似的“无额外开销”基类。显然,海湾合作委员会称其“几乎空了”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)