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 ?
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了