也不是不要用。你在.cpp里面怎么用都行,但在.h里面这样用就属于是给自己找麻烦了。
我们先写几段代码说明引入 using namespace std导致的问题: #include <iostream> using namespace std; struct pair{}; int main(){ pair p;//pair不明确,和std::pair有冲突 } 这里进行的是无限定名字查找。命名空间std包含了数量非常多的名字,如果直接引入,很容易出现各种查找的歧义。 当然了,这里我们还可...
不使用::std::可能导致的问题是,查找过程可能会出现歧义,除非我们使用 ::std::访问。还有其他情况,如内联命名空间,gcc的行为可能有非标准。使用::std::能解决这些。然而,通常情况还好。总的来说,命名空间就是简单地将一堆名字放入盒子中。如果使用using namespace std引入,就相当于将盒子中的所...
而引入单个变量或者函数就不用namespace 而是直接使用对应的空间名,如 using std: :cout;注意点:命...
尽量避免在头文件中使用using指令,特别是namespace。这样可以避免引入时产生命名冲突。理想情况下,应将所有引入的符号定义在自己的命名空间内。理论上,避免在任何情况下使用using namespace std是有道理的。因为系统库可能会更新,升级C++版本时,新引入的符号可能与代码中已存在的符号产生冲突。然而,一般...
虽然 using namespace std,看起来提供了一种方便的方法来使用标准库,但是它可能会带来一些潜在的问题。1. 命名冲突 当我们在程序中引入了 using namespace std后,意味着我们引入了整个 std 命名空间中的所有名称。这就可能导致与我们自己代码中的命名发生冲突。#include <iostream>void cout() { std::cout ...
需要保证的是尽量不要在头文件里 using 任何东西尤其是 namespace,要不然 include 进来的时候很容易莫名其妙产生命名冲突。 有条件的话,所有引入的符号都定义在自己的 namespace 里。任何情况下都不要using namespace std从理论上来说也是有道理的:因为系统库可能会升级,这样升级编译使用的 C++ 版本的时候有可能因为...
当你使用使用时,std标准库中的所有标识符都会在前面默认加上std::,比如std::cin,std::cout等等。 如果并没有熟悉std的函数有哪些,可能会在新建变量名时发生冲突,比如下面这种情况 #include "iostream" using namespace std; int max,min; int main() { cout<<max<<min; return 0; } ...
如果你确实需要使用using namespace,那就在足够小的作用域下使用,最大也就在一个cpp文件内部使用,绝对不要在头文件中使用using namespace! 为什么不使用using namespace std?(尤其避免在头文件中使用using namespace): 在大型项目中,更容易确定编程人员用的是什么命名空间下的函数(确定哪些是库里的函数,哪些是自己...
1. using namespce std;尽量不要(或者强硬一点,不许)在头文件中使用。 解析: 不让这么用,主要原因就是防止名字重复(即自定义变量名和std中名字重复),因为头文件会被很多地方使用,你不知道这个using能覆盖多大范围。 2. 头文件最好不用,但在cpp文件中可以使用(但有比这更好的方法,之后说),但是,有个条件,...