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

2024-12-23 14:50:30
推荐回答(2个)
回答1:

首先说一下printf吧,在最早的C语言的时候,由于不是面向对象,所以所有的函数都是唯一的!也就是说你打印的话,就必然会使用printf函数,当然了,你也可以操作更底层的代码,但是一般人不会那么干的,所以PRINTF就属于唯一的函数。
后来C++出现了,并且出现了STL或者一些其他面向对象的概念和函数。那么就会出现你写的函数和系统提供的函数会发生冲突,例如你可以自己写一个sort()函数来进行排序,但是STL里面也提供了sort()函数进行排序。并且如果你调用sort()函数的话,那么系统到底是调用你写的函数呢,还是调用STL的函数呢?这就需要到命名空间了。
如果你直接sort()的话,那么可能是调用你写的函数。
但是如果你std::sort()的话,就是调用STL中的排序函数。

命名空间说白了,就是有多个同名函数,或者变量。用命名空间来区分这些同名的变量和函数。

回答2:

目的 解决命名的冲突

即使名字相同,只要不是在一个命名空间中,编译器还是可以运行的....