什么使用命名空间std;怎么办?

时间:2016-01-20 16:57:13

标签: c++

这个C ++代码有什么问题?

我收到一条错误消息:在;之前应该有一个z,这是不正确的。我不理解的唯一部分是第2行的目的。

#include <iostream>
using namespace std;

int subtraction(int a, int b)
{
    int r;
    r=a-b;
    return r;
}

int main()
{
    int z;
    z = subtraction (5,9);
    cout z;
}

提前谢谢。

3 个答案:

答案 0 :(得分:3)

using namespace std;表示您可以稍后编写cout而不是std::cout。它以牺牲总名称空间污染为代价来节省打字。

编译错误可以通过编写cout << z;

来解决

另外,请从main返回一个值。

答案 1 :(得分:1)

要开始解释它的作用,了解命名空间的作用非常重要。命名空间是划分的逻辑代码单元,您可以创建自己的命名空间或使用其他命名空间。使用命名空间的好处是让您的程序在逻辑上将代码与功能分开。这与类非常相似,但您不需要像类那样启动名称空间。在Java中,这与包类似。要在命名空间中使用函数,您需要使用命名空间标识符,后跟要调用的函数。这将在您想要使用的命名空间作用域中调用正确的函数。创建命名空间的示例如下:

namespace connection 
{
 int create_connection();
 int close_connection();
 //ect.......
}   

然后在代码中稍后要调用create_connection时,需要按以下方式执行:

connection::create_connection();

至于你的答案,你可以防止在这种情况下连接或在你的案例std中输入命名空间标识符。您可以使用using-directive将整个命名空间引入代码段。这将允许您调用该命名空间中的函数,而无需使用后跟范围指示符“::”的命名空间。

以下语法如下:

using namespace connection:

或在你的情况下

using namespace std;

因此,通过使用std执行此操作,您将授予对std命名空间的访问权限,该命名空间包括C ++ I / O对象cout和cin以便自由使用,而无需首先使用命名空间和作用域运算符。虽然更好的做法是将范围限制为您想要实际使用的命名空间成员。在大型程序中,这将是更清洁的编码原因以及避免几个问题。要仅引入命名空间的特定成员,例如仅引入std :: cin和std :: cout,请执行以下操作:

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

答案 2 :(得分:0)

  

使用命名空间else做什么?

它告诉编译器要查找标识符的类/名称空间。您要么在文件的开头使用std;,要么必须将它放在每个函数的前面属于它。

  

这个C ++代码有什么问题?

使用using namespace std;的语法是:

std::cout

变量std::cout << source; source流的operator <<的帮助下插入,将其打印到标准输出,即计算机监视器。

std::cout &#34;标签&#34; 标准库的功能成员。这是一种技术(使用解析运算符std)解决(使用解析运算符::)属于标准库的成员(可能)名称与具有相似(相同)名称的函数冲突并减少范围搜索。 std被称为命名空间,因此using namespace std;有点自我解释。