作者popo4231 (小泰)
看板EE_DSnP
标题[问题] 很怪的问题
时间Sat Dec 8 17:42:05 2007
#include<iostream>
#include<iomanip>
using namespace std;
class A
{
public:
static const int i=100;
};
int main()
{
A a;
cout<<sizeof(a)<<endl;
system("pause");
return 0;
}
你猜执行会看到啥?
4吗
结果出现了1
超神奇= =
当然把static const去掉之後
就很正常的显示出4了
how is it possible
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.177
1F:→ Knossos:static const不能算是a这个物件的datamember,它是共用的 12/08 20:32
2F:→ Knossos:所以a的size不会把它算进去 12/08 20:33
3F:→ Knossos:以上是我的想法..仅供参考.. 12/08 20:33
4F:推 lionel20002:如果class里是空的用sizeof也会变成1 12/08 22:26
5F:→ lionel20002:推论static const没有被算到datamember里 12/08 22:27
6F:推 ric2k1:Yes, static data member 不属於任何 class object 12/08 23:34
7F:→ ric2k1:It acts as a class-scope global variable, shared by 12/08 23:35
8F:→ ric2k1:all the class onbjects. It can be accessed even without 12/08 23:36
9F:→ ric2k1:a class object. 12/08 23:36
10F:推 ric2k1:In addition, sizeof can NEVER return 0... 12/08 23:36
11F:→ ric2k1:even for empty class.. 12/08 23:37