C++中std命名空间是什么概念?作用是什么?为什么要引入它,而不像C中的printf那样呢?怎么实现的啊?

 我来答
china_air_it
2012-09-12 · TA获得超过406个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:113万
展开全部
首先说一下printf吧,在最早的C语言的时候,由于不是面向对象,所以所有的函数都是唯一的!也就是说你打印的话,就必然会使用printf函数,当然了,你也可以操作更底层的代码,但是一般人不会那么干的,所以PRINTF就属于唯一的函数。
后来C++出现了,并且出现了STL或者一些其他面向对象的概念和函数。那么就会出现你写的函数和系统提供的函数会发生冲突,例如你可以自己写一个sort()函数来进行排序,但是STL里面也提供了sort()函数进行排序。并且如果你调用sort()函数的话,那么系统到底是调用你写的函数呢,还是调用STL的函数呢?这就需要到命名空间了。
如果你直接sort()的话,那么可能是调用你写的函数。
但是如果你std::sort()的话,就是调用STL中的排序函数。

命名空间说白了,就是有多个同名函数,或者变量。用命名空间来区分这些同名的变量和函数。
追问
明白了。再请教一下,系统是如何识别命名空间的,
为什么是std::这样的写法,为什么不是别的写法呢?
这个好像涉及的深且意义性不是很大了吧。
想知道,望解答!
追答
好,我继续给你解答一下。你知道C++中的类吗?类中不是有静态函数吗?如果你访问类的静态函数你是怎么访问?肯定是 类名::静态函数名 这样访问把?其实STD的原理和这个是一样的。或者说你自己也可以构造一个所谓的命名空间。例如:
struct Mystd
{
void function1();
void function2();
}
然后你就可以Mystd::function1()这样来访问Mystd中的函数了。这里的Mystd和std的原理是一样的。C++无非就是把一些函数封装到了std这个结构体中!
Xuxu8511
2012-09-12 · TA获得超过388个赞
知道小有建树答主
回答量:1344
采纳率:0%
帮助的人:772万
展开全部
目的 解决命名的冲突

即使名字相同,只要不是在一个命名空间中,编译器还是可以运行的....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式