代码中对象的大小

时间:2012-12-06 06:47:09

标签: c++

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;
}

3 个答案:

答案 0 :(得分:2)

这是定义类的static成员的语法。它会将Test::i初始化为0

要给它另一个值,你可以做

int Tent::i = 42;

答案 1 :(得分:2)

int Test::i;

默认情况下定义类i的静态成员Test,将其初始化为0

static int i;

只声明成员i但不定义它。你需要单独定义。

答案 2 :(得分:0)

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

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