空结构体(空类)的size

对一个空结构体或者空类(只有构造函数和析构函数)取sizeof操作符,结果是什么?为此我问过一些同事,大多数人都说不太清楚。下面是我在不同编译器中尝试的结果。

 

#include class A {}; struct B {}; int main() { using namespace std; cout << sizeof(A) << endl; cout << sizeof(B) << endl; } 

VC 6.0的结果:     1, 1

g++(4.1.2)的结果: 1, 1                               

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

你可能感兴趣的:(1,-,C++,0,-,C)