局部变量名称冲突
Local variables name collision
如果我在封闭块中定义一个变量,在嵌套块中定义另一个同名变量,如何从嵌套块内的封闭块访问变量?
int main ()
{
int i = 0;
{
int i;
i = 10;
}
cout << i; // prints 0
}
你已经"遮蔽"了前面的定义,所以它基本上消失了。如果需要访问它,请选择其他名称。就编译器而言,在该内部块中只有一个i
,它不知道它替换的其他i
。
要么给它一个更好的名字:
int i = 0;
{
int ii;
i = 10;
}
cout << i; // prints 10
或者使用函数:
int i = 0;
f(i);
cout << i; // Depends on what f() does.
您在哪里:
void f(int& i) {
i = 10;
}
这将修改原始i
.
如果可以的话...
重命名它们:
int main ()
{
int i = 0;
{
int j;
i = 10;
}
cout << j; // prints 10
}
如果你不能..
不可能。内部作用域中的i
遮蔽外部作用域中的i
。声明具有相同名称的变量后,无法从外部作用域访问i
。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 在C++中,在给定的相同作用域内声明相同的变量名
- 为什么类名与"::"一起使用在变量名之前?
- 在同级之间继承相同的变量名
- 变量名为TYPE_BOOL(c++代码)与ios宏冲突
- 包含windows.h会导致与本地变量名冲突