gpt4 book ai didi

c++ - 当 "local"、 "global"和 "local"变量存在同名时如何访问 "very local"变量

转载 作者:太空狗 更新时间:2023-10-29 19:56:22 28 4
gpt4 key购买 nike

int i = 1;
int main()
{
int i = 2;
{
int i = 3;
cout << ::i << endl; //i want to print 2, neither 1 nor 3
}
system("pause");
return 0;
}

我想打印2。默认情况下,cout << i << endl;打印 3 和 cout <<::i << endl;打印 1.

最佳答案

当局部名称被嵌套作用域中的另一个局部名称隐藏时(例如 i 的值为 2 的 i),无法引用该局部名称> 值为 3)。您能做的最好的事情就是在它仍在范围内时创建对它的引用:

int main()
{
int i = 2;
int& middle_i = i;
{
int i = 3;
cout << middle_i << endl; //will print 2
}
system("pause");
return 0;
}

当然,真正正确的解决方案不是隐藏您需要访问的名称,因此重命名局部 i 变量之一。


由于问题也被标记为 c,请注意 C 缺少引用和范围解析运算符 (::),因此在 C 中你会遇到困难使用指针(在这方面甚至比引用更糟糕),或者甚至强烈遵循“实际正确的解决方案”并且不隐藏您打算使用的任何名称。

关于c++ - 当 "local"、 "global"和 "local"变量存在同名时如何访问 "very local"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50427989/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com