0

什么线 int Test::i; 在下面的程序中。有人请解释

// Assume that integers take 4 bytes.
#include<iostream>

using namespace std;   

class Test
{
  static int i;
  int j;
};

int Test::i;

int main()
{
    cout << sizeof(Test);
    return 0;
}
4

3 回答 3

2

static这是定义类成员的语法。它初始化Test::i0

为了给它另一个价值,你可以做

int Tent::i = 42;
于 2012-12-06T06:47:53.623 回答
2
int Test::i;

默认情况下定义初始化它i的类的静态成员。Test0

static int i;

只是声明成员i但没有定义它。您需要单独放置定义。

于 2012-12-06T06:52:21.190 回答
0

有问题的行定义(实例化)类 Test 中的静态变量 i 并将其初始化为默认值零。

程序写出类型为 Test 的对象的大小,即 int "j" 的大小(以字节为单位)。该数字取决于平台。一个32位的Windows程序会写4。变量“i”没有进入,因为它不是Test类对象的成员,而是一个“静态成员”,它就像一个全局变量,只是它是只能通过类 Test 的命名空间访问。

于 2012-12-06T07:02:51.630 回答