【发布时间】:2017-10-11 10:51:17
【问题描述】:
在下面的程序中,我在 main() 函数中声明了类。
案例 1:
int main()
{
static int i = 10; // static variable
class A
{
public:
A()
{
std::cout<<i;
}
};
A a;
return 0;
}
它在 G++ 编译器中运行良好。
但是,如果我删除 static 关键字并编译它,编译器会报错。
案例 2:
int main()
{
int i = 10; // removed static keyword
class A
{
public:
A()
{
std::cout<<i;
}
};
A a;
return 0;
}
错误:
In constructor 'main()::A::A()':
13:32: error: use of local variable with automatic storage from containing function
:cout<<i;
^
7:13: note: 'int i' declared here
int i = 10;
^
为什么案例 1 工作正常?为什么案例 2 不起作用?
【问题讨论】:
-
你的问题是什么?