就一点小问题不懂!在线等!!c++!

来源:百度知道 编辑:UC知道 时间:2024/05/29 23:06:17
#include<iostream>
using namespace std;
class sample
{
public:
sample()
{
cout<<"construct"<<endl;
}
};
void fn(int i)
{
static sample c;
cout<<"i="<<i<<endl;
}
void main()
{
fn(10);
fn(20);
}
这个程序数输出的是:construct
i=10
i=20
为什么不是:construct
i=10
construct
i=20
越详细越好噢!简单吧!

因为你的代码中c被定义成static的,
所以只会执行一次 sample() ;

如果将:
static sample c;
改为:
sample c;
那么就会输出:
construct
i=10
construct
i=20

c是sample类的static静态对象,只构造一次,第二次用到fn()函数时不再调用sample类的构造函数,所以只有一个construct打印出