C++的using namespace std表示什么意思?为什么C语言没有这句话

如题所述

是命名空间的意思,这样编译器在编译的时候相当于每个变量都是 命名空间+变量名,这样就可以在不同命名空间里,起同样的变量名,防止变量名用尽或者冲突。C语言没有命名空间,C和C++其实是两门语言,尽量按照他们是两门不同语言的思路来学习比较好。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-18
h这种没有名字空间的头文件一样),打开文件就会发现,做为一个良好的习惯。标准c++引入了名字空间的概念,也就是早期的c++实现;iostream".h的头文件c++标准已经明确提出不支持了,实际上;,使用的是全局命名空间,所以头文件包含的写法也就变成了#include
<.h>就必须用using
namespace
std;iostream>hello"。
后缀为,该头文件没有定义全局命名空间,二者是两个文件、string等等;时;iostream>:endl;与#include<.h.h>不一样:.h后缀的头文件里.h>:。
并不是写了#include<和<,也为了正确使用命名空间,规定头文件不使用后缀;iostream在标准c++以前.h就改成cstring(就是把;
<,在包含系统头文件时尽量用<,找不到再去系统头文件路径找;iostream,c++标准为了和c区别开,同时为了不与原来的头文件混淆,当使用<,使标准c++库用起来与传统的iostream,前者没有后缀;iostream
>。
因此,并且把原来c标准库的头文件也重新命名,因为要包含进来的头文件名就是iostream.h>iostream;iostream;
则出错
所以
要么写成
#include
<,声明在带.h去掉,如std;
using
namespace
std;>:cout
<我们通常这样的写的原因是为了一下子把std名字空间的东东全部暴露到全局域中(就像是直接包含了iostream;的时候,后者反之,都是用#include<:前者先在当前目录找iostream文件;iostream>的区别.h;
using
namespace
std;;<,如原来的string;
"iostream>,相当于在c中调用库函数,早些的实现将标准库功能定义在全局空间里;
iostream>,而在包含自己的工程中的头文件时用"。如果不用using
namespace
std,前面加上字母c).h>.h一样方便,必须使用namespace
std;这样的写法的,这套头文件的文件名后不加。因此.h扩展名;这样才能正确使用cout;
要么写成
#include
<,如iostream。
<
std;;当使用<使用标准库时就得时时带上名字空间的全名;<。
#include
<,规定标准c++使用一套新的头文件;",在编译器include文件夹里面可以看到,里面的代码是不一样的;iostream,并把iostream等标准库中的东东封装到了std名字空间中;
#include
"
第2个回答  2012-09-24
<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout
第3个回答  推荐于2018-10-27
使用std命名空间

98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。举一个实例,请注意以下两个:

// one.h
char func(char);
class String { ... };

// somelib.h
class String { ... };

如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。
所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。比如:
// one.h
namespace one
{
char func(char);
class String { ... };
}

// somelib.h
namespace SomeLib
{
class String { ... };
}

现在就算在同一个程序中使用String类也不会发生冲突了,因为他们分别变成了:one::String()以及Somelib::String()

这样,就可以通过声明命名空间来区分不同的类或函数等了。
比如C++标准库定义了命名空间:std,其中包含容器vector,示例如下:
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main(int argc, char* argv[])
{
const int arraysize = 7;
int ia[arraysize] = {0,1,2,3,4,5};

file://定义容器vector
vector<int> ivect(ia,ia+arraysize);

vector<int>::iterator it1 = find(ivect.begin (),ivect.end (),4);
if(it1 == ivect.end ())
cout<<"4 not found "<<endl;
else
cout<<"4 found "<<*it1<<endl;

return 0;
}

输出结果为:4 found 4.

龙行虎步的伟岸英姿;本回答被网友采纳
第4个回答  2012-09-24
命名空间而已,标准输入输出格式,没这个就不能用C++特有的重载cout<<和cin>>了

这些标准格式,不要拘泥于这些小节了,不然你会发现后面没法学了。。。各种小的格式问题。。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网