所以我刚开始自学C ++,我有两个关于Hello World练习的新手问题。
#include <iostream>
using namespace std; [1]
int main()
{
cout << "Hello, World" << endl; [2]
return 0;
}
[1]这行代码是否必要?如果没有,为什么?它没有它,但我找到了一个使用它的来源,并想知道为什么使用它。
[2]在我第一次尝试时,我忘记添加 endl 并且代码有效。当我去检查时,我意识到这已经失踪了,为什么它仍然可以工作?
真正基本的问题,但我想很好地理解基础知识。
非常感谢提前。
答案 0 :(得分:3)
这行代码是否必要?如果没有,为什么?它没有它,但我找到了一个使用它的来源,并想知道为什么使用它。
首先,您应该了解名称空间是什么。 这是一个参数参考: Namespace
实际上,命名空间就像一个容器。你可以保持不同 符号的名字。这样,在非常大的项目中,可以定义两个具有相同名称的不同符号(例如两个函数)。
我试着给你一个小例子: 我可以使用相同的名称定义两个不同的函数 foo 。它可能因为我将它们放在两个不同的命名空间中。
namespace my_ns1 {
void foo(int a) {
return a;
}
}
namespace my_ns2 {
void foo(int a) {
return a + 2;
}
}
当我想调用第一个 foo 函数时,正确的调用 将是:
my_ns1::foo(10); // return 10
如果我想调用第二个 foo 函数,那么:
my_ns2::foo(10); // return 12
在特定的块中,我可以指定始终使用命名空间的意图 代码:
using namespace my_ns1;
这样就不再需要指定函数的“全名”了。
标准库将其所有功能保存在适当的命名空间中: std 。 因此,当您想要在标准库中使用函数时,您必须使用以下内容调用它:
std::function(...)
如果您使用代码
using namespace std;
在您的文件开头,您只是说“打开”该命名空间 你可以在没有std ::
的情况下调用所有函数命名空间非常有用,可以防止名称冲突。
[2]在我第一次尝试时,我忘了添加endl并且代码工作正常。当我去检查时,我意识到这已经不见了,为什么它仍然可以工作呢?
简单
std::endl
是插入'\ n'字符的正确方法,意思是“行尾”。