【发布时间】:2021-04-28 16:19:42
【问题描述】:
我尝试了以下代码:
#include <iostream>
using namespace std;
int main()
{
char string[4]='xyz';
return 0;
}
由于字符串是关键字,编译器应该给出错误但运行良好。谁能解释为什么它编译成功。
【问题讨论】:
-
string不是关键字。 -
string不是关键字,它只是std命名空间中的标识符。您已经创建了一个新标识符string,它位于您的 main 函数的本地。 -
另外我假设你的意思是
"xyz"不是'xyz'。 -
此外,虽然
<iostream>可能 包括<string>,但不能保证或在任何地方指定。如果您想使用std::string,您应该始终明确地包含<string>标头。 -
@AndreasWenzel -- 很好的建议,但请注意,阴影适用于所有名称,而不仅仅是变量的名称。在这种情况下,变量
string的名称隐藏了string类型的全局名称(因为,你知道,using namespace std)。
标签: c++ string exception keyword