对一个空结构体或者空类(只有构造函数和析构函数)取sizeof操作符,结果是什么?为此我问过一些同事,大多数人都说不太清楚。下面是我在不同编译器中尝试的结果。
VC 6.0的结果: 1, 1
g++(4.1.2)的结果: 1, 1
您可能得到不同的结果,比如用gcc单独测试B的size可能是0。然后您可能兴高采烈的出来发表自己的看法,但这恰恰表现出您的无知。要回答这个问题,先要试着回答另外一个问题,空结构或空类有什么用?如果你认为它们的用处已经在这道"饶有趣味"的题目中,那不仅说明你的无知,而且相当的无聊。有的编译器干脆拒绝对一个空结构或空类取sizeof,我非常欣赏这种漂亮的做法。理由很简单,空结构或者空类没有太多实际用处。但正如一些人那样,非要说出几个反例来证明自己是多么的与众不同的话,这儿还当真有一个,空结构或者空类在代码中可以起到stub(桩)的作用。在代码未成型之前,保证能编译通过的前提下,先写出一个代码架构来,这个时候空结构,空类还有空函数能起到占位的作用。

本文讨论了在不同编译器下,对空结构体或空类使用sizeof操作符的结果,并介绍了这些空结构或空类在软件开发中的潜在用途。
1718





