Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在c+;中必须使用名称空间std+;语言?_C++_Using - Fatal编程技术网

C++ 为什么在c+;中必须使用名称空间std+;语言?

C++ 为什么在c+;中必须使用名称空间std+;语言?,c++,using,C++,Using,这是一个简单的程序,我的问题是,为什么必须使用名称空间std?为什么不使用这个程序就不遵守程序 #包括 使用名称空间std; int main(){ INTA、b、c、d; 你不应该(但可以)使用 您可以在该命名空间中的每个对象之前使用std::,例如: std::cout << "Enter First Value" << std::endl; std::cin >> a; std::cout a; 您不应该(但可以)使用 您可以在该命名空间中的每个对象之

这是一个简单的程序,我的问题是,为什么必须使用名称空间std?为什么不使用这个程序就不遵守程序

#包括
使用名称空间std;
int main(){
INTA、b、c、d;
你不应该(但可以)使用

您可以在该命名空间中的每个对象之前使用
std::
,例如:

std::cout << "Enter First Value" << std::endl;
std::cin >> a;
std::cout a;
您不应该(但可以)使用

您可以在该命名空间中的每个对象之前使用
std::
,例如:

std::cout << "Enter First Value" << std::endl;
std::cin >> a;
std::cout a;
为什么必须使用名称空间std

它不是。

其实,

但是,如果不使用命名空间std
编写
,则需要完全限定从标准库中使用的名称。这意味着
std::string
而不是
string
std::cout
而不是
cout
,等等

如果你的书没有告诉你这一点,那么你需要

为什么必须使用名称空间std

它不是。

其实,

但是,如果不使用命名空间std
编写
,则需要完全限定从标准库中使用的名称。这意味着
std::string
而不是
string
std::cout
而不是
cout
,等等


如果您的书没有告诉您这一点,那么您需要。

如果没有名称空间,您应该注意您的自定义名称是否与包含的名称冲突。代码中使用名称空间的
部分是一种语法甜味剂:您不必为所有发生的事件设置
std::
范围。您的代码可能更可读,但您的无范围名称集已缩小。请考虑以下示例:

#include <cstdio>
#include <iostream>

int main()
{
    char endl[] = "xy";
    std::cout << "[" << std::endl << "]";
    std::cout << "[" << endl << "]";
    return 0;
}
#包括
#包括
int main()
{
char endl[]=“xy”;

STD::没有名字空间,你应该关心你的自定义名称是否与包含的名称冲突。<代码>使用命名空间< /代码>你的代码的一部分是语法甜味剂:你不必把所有的事情放在<代码> STD::/Cult>作用域中。你的代码可以更可读,但是你的无范围名称的集合被缩小了。机翼示例:

#include <cstdio>
#include <iostream>

int main()
{
    char endl[] = "xy";
    std::cout << "[" << std::endl << "]";
    std::cout << "[" << endl << "]";
    return 0;
}
#包括
#包括
int main()
{
char endl[]=“xy”;

std::cout一般来说,不建议使用命名空间
,因为它会将名称空间中的所有内容导入到您的名称空间中

对于非常小的工具或在本地范围内,这可能是可以的,但在任何情况下都不应在作为接口提供的头文件中执行

一件方便的事情可能是可以的,就是通过导入一些常用的标识符到您的(cpp文件全局-非头)命名空间中

using std::cout;
using std::cin;
using std::endl;

另请注意“轻量级在轨道上比赛”的链接一般来说,不建议使用命名空间
,因为它会将名称空间中的所有内容导入到您的链接中

对于非常小的工具或在本地范围内,这可能是可以的,但在任何情况下都不应在作为接口提供的头文件中执行

一件方便的事情可能是可以的,就是通过导入一些常用的标识符到您的(cpp文件全局-非头)命名空间中

using std::cout;
using std::cin;
using std::endl;

另请注意“轨道上的亮度竞赛”链接

它实际上是强制的相反。为了简洁,它主要用于C++书籍中,但是在现实世界中,拉动整个<代码>名称空间STD 会导致严重的头痛。为什么使用命名空间STD是强制性的?它不是。使用它的坏习惯:请阅读此:为什么不使用程序而不使用此程序。你是否尝试删除它,看看没有它的编译器问题是什么?它实际上是强制的相反的。为了简洁,它主要用于C++书籍。但是在现实世界中,拉动整个<代码>命名空间STD 会导致严重的头痛。为什么使用命名空间STD是强制性的?它不是。使用它的坏习惯:请阅读以下内容:为什么不使用此项程序就无法编译?您是否尝试删除它,并查看没有它编译器会出现什么问题?请注意,您可以将
使用名称空间std;
放在函数内部,这在某些情况下可能更容易接受。请注意,您可以将
使用名称空间std;
放在函数内部,在某些情况下,这可能更容易接受。它实际上比语法上的甜味剂多一点;它打开了可能不存在的潜在歧义。“如果您想将名称endl用于自定义目的…”不是真的;您应该编写
::endl
(或者,最好是
myownnamespace::endl
(或者完全避免使用这个名称!)。实际上,它比语法上的甜味剂稍微多了一点;它打开了可能不存在的潜在歧义。“如果您想将名称endl用于自定义目的…”不是真的;您应该编写
::endl
(或者,最好是
myownamespace::endl
(或者完全避免使用这个名称!)。