C++中的命名空间一定需要吗???

pororo913 2008-03-18 04:08:03
为什么我写的程序(一个很小的求两个数的最大值), 我写的 using namespace std; 系统提示说 std 不是一个命名空间; 把 using namespace std 去了 运行是正确的, 我真搞不懂 !!!! 为什么有时一定要用命名空间 有时 却不需要呢???
...全文
536 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
duruos 2011-02-25
  • 打赏
  • 举报
回复
我在vs2010里遇到过,像是没包含头文件用using namespace std;会出现那种情况,加上头文件就好了;猜测是头文件里没STL的头文件
谭海燕 2011-02-25
  • 打赏
  • 举报
回复
你自己写个小程序当然就用不着命名空间了。

但是,现在很多公司的系统框架中,一方面为了区分自己和其他的系统的名字,

另一方面是顺带突出自己的公司的名字。

例如,MeeGo系统框架代码中,经常就会使用

using namespace MeeGo;
iambic 2011-02-25
  • 打赏
  • 举报
回复
没读过书吧。
lt5733 2011-02-25
  • 打赏
  • 举报
回复
这样写的代码:

#include <iostream>
using namespace std;

的命名空间没写,且你没像c那样写好几个其他的头文件应该报错的吧。
hrx1989 2011-02-24
  • 打赏
  • 举报
回复
听了楼上这么多的讨论。我好想有一点了解啦!!哈哈
晨星 2008-03-21
  • 打赏
  • 举报
回复
问题是他可能根本就没包含任何标准头文件,哪来的std。
萧乐颜 2008-03-21
  • 打赏
  • 举报
回复
因为你的程序中根本没有包含任何声明了std空间的东西,通常标准头文件的东西都是在std中的。
也可以不写"use namespace std;"
但在程序中就要写类似"std::string"的"std::"的东西,这样就麻烦多了,每个地方都要写,所以还是用"use namespace std;"省事得多.
csdn5211 2008-03-21
  • 打赏
  • 举报
回复
名字空间是很有用的,我觉得跟类差不多,当然,不能继承,只是从封装的角度来说。
alwaysrun 2008-03-21
  • 打赏
  • 举报
回复
最新的标准中是必须加namespace的。
但是很多为了兼容,还有就是如VC6.0等,在标准之前就出来的,不完全符合标准。
如果#include的头文件不加.h需要用namespace。
如果头文件加.h就不一定需要namespace了
晨星 2008-03-21
  • 打赏
  • 举报
回复
那是因为你的程序中根本没有包含任何声明了std空间的东西,通常标准头文件的东西都是在std中的。
yqw945 2008-03-21
  • 打赏
  • 举报
回复
命名空间主要的作用是防止类名冲突,比方说下面两个名空间里都定义了相同名字的类a1

namespace space1
{
class a1
{
}
}
namespace space2
{
class a1
{
}
}

你在使用的时候一般要指定是哪个名空间下的a1,space1.a1或者space2.a1
这样适合团队开发自己写的类放在自己的名空间中,这样不用担心与别人写的类出现重名的情况。

一般我们要频繁的调用已经封装好的类库时,为了避免写 “命名空间.类名”这样过长的语句,就可以直接用using 名空间,告诉编译器我这里用的类都是在这个名空间下的。

比如使用了using namespace space1
那么 space.a1 等价与 直接写 a1,编译器就不会到space2中去找a1的定义了,也就不存在类名冲突!

希望我表述清楚了,能够对让楼主对命名空间有一定的了解!
ZiSheng 2008-03-21
  • 打赏
  • 举报
回复
如果你使用了#include "iostream"并且你用了cout,cin就得加上using name space 个人理解
neurobot 2008-03-21
  • 打赏
  • 举报
回复
你大概写了如下的代码吧
#include <cstdio>
using namespace std;

int main ()
{
int a, b;

printf("100\n");
}

你要是没有包含C++的头文件且使用了using namespace std,就会出现这个问题
建议google一下名字空间的说明
qiucp 2008-03-21
  • 打赏
  • 举报
回复
baidu
zhoufuguo8802 2008-03-21
  • 打赏
  • 举报
回复
你前面是不是加了
#include <iostream.h>啊?
如果有这个的话,那个就包括了using namespace std;
因为要命名域来限制命名,你的一些函数名或者是变量名才能被识别
crushor 2008-03-21
  • 打赏
  • 举报
回复
不需要,就像你不一定非得需要3个衣柜,12个抽屉一样,要一个就好了,可以都扔进去啊。
出那个错误是你没有包含(用到)有std声明的头文件,也就是你没有用std里的东东。
小猪瑞比 2008-03-18
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
//.............

return 0;
}
qmm161 2008-03-18
  • 打赏
  • 举报
回复
using namespace::std
astronomy888 2008-03-18
  • 打赏
  • 举报
回复
刚写过类似程序,好像没遇到这样的问题
不过我也是菜鸟
jieao111 2008-03-18
  • 打赏
  • 举报
回复
命名空间是为了防止名字污染,建议你看搜一下名字空间域,,了解详细
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其包含类型转换、文件操作、异常处理、代码重用等内容。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧