gpt4 book ai didi

c++ - 为什么我的 C++ 代码即使使用双重声明的变量也能编译?

转载 作者:行者123 更新时间:2023-11-30 00:44:56 25 4
gpt4 key购买 nike

我正在尝试从 Accelerated C++ 一书中学习 C++。在第 1 章的末尾,有一个练习让我大吃一惊。本质上,我想知道为什么以下代码可以完美地编译和运行:

#include <iostream>
#include <string>

int main() {
{
const std::string s = "a string";
std::cout << s << std::endl;
{
std::cout << s << std::endl;
const std::string s = "another string";
std::cout << s << std::endl;
};
}
return 0;
}

在我看来,我双重声明了字符串 s,据我所知,这是非法的。你能帮我更好地理解这一点吗?谢谢。这产生的输出是:

a string
a string
another string

最佳答案

在 C++ 中,您可以在嵌套范围内重新声明变量。在该范围内,重新声明的变量优先。

有关标准引用,请参阅 [basic.scope.hiding]:

A name can be hidden by an explicit declaration of that same name in a nested declarative region or derived class

关于c++ - 为什么我的 C++ 代码即使使用双重声明的变量也能编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652203/

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