C++运行结果的疑惑/

来源:百度知道 编辑:UC知道 时间:2024/09/21 23:13:30
#include"iostream.h"
class CSample
{
int i;
static int k;
public:
CSample();
void Display();
};

CSample::CSample()
{
i=0;
k++;
}

void CSample::Display()
{cout<<"i="<<i<<",k="<<k<<endl;}

int CSample::k=0;

void main()
{
CSample a,b;
a.Display();
b.Display();
}

第一次输出的k值为什麽不是1 ?

因为你是这样写的啊CSample a,b;你相当于调用了两遍构造函数,而k还是静态成员变量,相当于共享的啊。所以k=2.
如果写成
CSample a;
a.Display();
CSample b;
b.Display();
第一次输出的k值就是1了