c++全局变量

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:25:59
#include<iostream.h>
int a;
class A
{int b;
public:
A(){a=0;b=0}
void seta() {a++;}
void geta() {cout<<a;}
};
void main()
{A a1;
a1.seta();
A a2;
a2.seta();
a2.geta();
}
2、
#include<iostream.h>
int a;
class A
{int b;
public:
A(){a=0;b=0}
void seta() {a++;}
void geta() {cout<<a;}
};
void main()
{A a1,a2;
a1.seta();
a2.seta();
a2.geta();
}
两题结果一样吗?
全局变量在这种情况下是否类似静态变量

没有任何区别

说得没错
类似静态变量

因为折构函数A()的存在
在进行a1.seta();
前和后对a2进行定义是有区别的
第一个程序等价于
a=0;b=0;
a++;
a=0;b=0;
a++;
cout<<a;

第二个程序相当于
a=0;b=0;
a++;
a++;
cout<<a;

没有区别,全局变量如果在类中又重新定义初始化的话,那它将作为局部变量,且覆盖掉之前定义好的

结果似乎不一样,a1是1,a2是2,因为你修改的都是同一个类上的数据

一样的 没区别