如果你不小心定义了一个与标准库中同名的函数或对象,使用using namespace std,可能会导致你意外地使用了标准库中的版本,而不是你自己的版本,这可能会导致难以追踪的bug。#include <iostream>#include <vector>using namespace std;int main() { vector v; // 意外地使用了std::vector,而不是我们自己的...
问题的关键在于命名空间冲突。例如,考虑下面的代码示例,它创建了一个名为space1的命名空间,并在其中定义了一个名为cout的整型变量。如果此时直接使用"using namespace std",就会与iostream类中的cout产生重名,从而引发编译错误,提示cout的二义性问题。这就是"省事"带来的"费事"。为了避免这种冲突,...
也不是不要用。你在.cpp里面怎么用都行,但在.h里面这样用就属于是给自己找麻烦了。
而引入单个变量或者函数就不用namespace 而是直接使用对应的空间名,如 using std: :cout;注意点:命...
理论上,避免在任何情况下使用using namespace std是有道理的。因为系统库可能会更新,升级C++版本时,新引入的符号可能与代码中已存在的符号产生冲突。然而,一般情况下,C++版本升级频率可能每年不超过一次,冲突可能性并不大。同时,升级版本也未必能确保成功编译。为了追求升级时省一点时间,却让编码和...
usingnamespacestd;// 导出命名空间std中的所有名称 不少人建议不要直接这么用,因为这样增大了命名冲突的可能性,但其实跟标准库命名冲突的可能性很小,冲突了也基本是很明显的编译错误。 当然,最好是能控制影响范围,比如尽量不要在头文件中using namespace std,因为头文件可能会被别人include。
在大型项目中,使用using namespace std;会存在以下几个问题: 命名冲突:使用using namespace std;会将所有std命名空间下的名称都引入当前命名空间,可能会与当前项目中的其他标识符冲突,导致编译错误。 可读性差:如果在项目中使用大量的命名空间,代码可能会变得难以阅读和理解,因为不知道哪个标识符映射到哪个命名空间。
当谈及这个问题,不少刚入门C++编程的同学一定会觉得这是一个多余的问题。因为,using namespace std太好用了,一行代码可以省略每次在调用cout或者cin时,加上std::cout或者std::cin。但是随着开发经验的积累,你…
为什么直接使用 using namespace std 是个坏习惯 问题 有人告诉我在代码里直接使用using namespace std;这样很不好,应该这么用,std::cout、std::cin等等。 但是为什么不好呢? 影响性能?命名冲突? 回答 这跟命名冲突有关,与性能是没有关系的。 举个例子,现在考虑你正在使用两个库,分别是foo和bar,...
如果using namespace 引入,就相当于把这个盒子里的所有名字倒出来,你单纯的不加任何限定的使用,容易造成歧义。 不过可以增加一些名字查找,比如::查找全局这个盒子里的名字,std::查找std命名空间这个盒子里的名字。 另外gcc对于那几个例子有bug,msvc和clang的行为是一样的。 最后,养成好习惯吧,不要使用 using na...