假设在函数外声明的变量是全局变量。
//sample.cpp
int g = 0;
namespace foo
{
int x = 5;
class bar
{
int y = 7;
/** rest of the bar class **/
}
/** rest of the bar namespace **/
}
我知道g是一个全局变量
我的问题是:
是x是一个全局变量?
是一个全局变量?
换句话说:是在类和名称空间全局变量中声明(在我的例子中定义)的变量吗?
随后的全文。
将sample.cpp更改为:
#include <stdio.h>
int g;
int g2 = 2;
namespace foo
{
extern int x = 5;
extern int x2; //accessing x2 will lead to an error.
class bar
{
public:
int foo::bar::y; //declaring y with a value will lead to an error.
/** rest of the bar class **/
};
/** rest of the bar namespace **/
}
int main()
{
}
乔恩建议我尝试一些事情并做出以下假设:
答案 0 :(得分:3)
简短回答。 x是。 y不是。
x是全局的,因为它可以从程序的任何地方访问,但是你必须完全限定它的名称为foo.x.要从另一个文件访问它,通常需要包含一个extern语句: extern int foo.x ,这实际上告诉编译器'在这个程序中有一个名为foo.x的int变量,你还没有看到它'。该参考文献将在链接时解决。
y是类栏的成员变量。对于每个bar实例,该对象都包含y。
答案 1 :(得分:0)
首先我们来看全局变量和局部变量
全局var可以在本地或全局的任何方法或函数中访问,而局部var仅限于其周围,或者根本无法在方法内部访问的方法中调用。
我们不能声明类的var out这两个变量应该在类的任何方法或函数中可访问的类范围中初始化,这样你就可以说这些是全局变量。
希望这有助于您了解本地和全局变量。