C++中很有趣的函数调用(帮忙解释一下)

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:55:16
谁能帮帮我,解释一下这个程序的调用
#include<iostream.h>
void f();
class G
{
private:
static int totalW;//declare声明静态变量
int w;
public :
G(int a=100)
{
w=a;
totalW+=w;
}//构造方法,自动调用
int Get()
{
return w;
}
static int GetTotalW(void)
{
return totalW;
}
~G()
{
totalW-=w;
}
};
int G::totalW=0;//define 定义静态变量
main()
{
G g1,g2(12);
cout<<"The total is:"<<G::GetTotalW()<<endl;//第一个对象自动调用构造函数,
f();
cout<<"The total is:"<<G::GetTotalW()<<endl;
return 0;
}
void f()
{
G g3(20);
cout<<"The total is:"<<G::GetTotalW()<<endl;
}

具体的很麻烦,也懒得细讲,反正你记住整个类里面不管有多少对象,它都只有一个静态的totalW。
无论是局部对象还是全局对象,你定义的构造函数和析构函数都会改变这个totalW的值,所以只要仔细研究g1,g2,g3的建立和释放过程就很容易知道输出的结果了。