关于“Hello World”的几个基本问​​题

时间:2016-07-26 21:16:30

标签: c++

所以我刚开始自学C ++,我有两个关于Hello World练习的新手问题。

#include <iostream>
using namespace std;                    [1]

int main()
{
    cout << "Hello, World" << endl;     [2]
    return 0;
}

[1]这行代码是否必要?如果没有,为什么?它没有它,但我找到了一个使用它的来源,并想知道为什么使用它。

[2]在我第一次尝试时,我忘记添加 endl 并且代码有效。当我去检查时,我意识到这已经失踪了,为什么它仍然可以工作?

真正基本的问题,但我想很好地理解基础知识。

非常感谢提前。

1 个答案:

答案 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'字符的正确方法,意思是“行尾”。