gpt4 book ai didi

c++ - 隐藏参数 C++ 的有趣案例(参数未在 if block 中隐藏)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:18 24 4
gpt4 key购买 nike

<分区>

我今天惊讶地发现下面的代码是完全有效的(gcc 4.4.5):

int get_int(const int& i)
{
if(i == 0)
{
int i = 1;
return i;
}
return i;
}

我真的很惊讶。如果我必须接受它,那么我可以肯定地说它是有道理的,因为新变量在它自己的 block 中,所以外部的其余代码仍然可以访问该参数,因此该参数并没有真正被隐藏。但这对我来说仍然没有意义,为什么我们不把它变成一个无效的语法?我看不到允许这样做有什么好处,事实上,我只需要深入研究由此引起的错误。这是一个很长的函数,我创建了自己的变量,但没有意识到它与参数同名,后来的几行代码(同一 block )依赖于那个参数变量,现在它正在使用我的版本我一天有一个小时。

我对编译器的了解非常肤浅,所以有人可以向我解释一下这种行为背后的全部故事吗?作为比较,在 Java 中这样的代码是无效的(重复变量)。

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