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;
}
答案 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的命名空间访问。