【发布时间】:2020-01-07 17:02:32
【问题描述】:
我有:
-
string s = "global"[全局范围] -
string s = "local"[局部作用域(主函数)]
我希望函数f1() 在从main 调用时打印出本地s,但该函数正在打印全局s。
#include <iostream>
using namespace std;
//global variables & functions .h
string s = "global"; void f1();
//main begins
int main()
{
string s = "local";
f1();
return 0;
}
//function definitions .cpp
void f1()
{
cout << s;
}
输出是:
global
Process returned 0 (0x0) execution time : 0.281 s
Press any key to continue.
【问题讨论】:
-
问问自己,
f1应该如何看到main本地的s。 -
f1不知道main中的本地s,只看到全局s。如果您希望f1了解 main 的s,您需要将其作为参数传递。 -
你在用哪本书来学习 C++?
-
查看 question 以更广泛地讨论名称范围。
-
f1()应该看到本地的s因为std::cout也看到了它。 例如如果我在 main 中输入std::cout << s;,那么它将输出local。那么问题来了,为什么f1()没有表现出相同的行为?是不是因为std::cout的执行?如果有人能阐明这一点,那将非常有用。
标签: c++ function scope global-variables