在c ++中当我想使用cout显示到控制台时,我曾经使用
using namespace std;
但最近我被告知仅使用
using std::cout;
因为它减少了开销,这意味着什么以及它有何帮助?
答案 0 :(得分:1)
说它的开销是用词不当。没有固有的"开销"使用using namespace
声明时。
不鼓励using namespace std;
的原因更为微妙:
#include
的每个标准标头都有namespace std {}
块内声明的大量类,函数,类型和其他名称。 using namespace std;
声明与剥离namespace std {}
块并将所有内容放入全局命名空间基本相同。
因此,如果您需要在代码中某处使用名称cout
或endl
(或其他数百个名称),那么不在引用标准输出流时,您的名称将与标准名称冲突,并且您将获得一堆编译器或链接器错误,或者难以解释的行为。
因此,您可以花时间确保您使用的所有名称都不在标准库中,或者您可以将其全部保留在std
命名空间中,您可以明确地引用它们它。
标准建议是从不在头文件中使用using
指令,但在正常情况下明智可以使用 (非标题)源文件。
大多数编码标准和指南都更进一步,完全禁止using namespace
,并且要求您使用using
这样的特定using std::cout;
声明,在这些声明中,您确定自己并不是cout
。将在您的源文件中声明您自己的using std::typename;
。
我更喜欢后一种建议,只使用list
只能使我的代码更容易阅读,并且即便如此。
答案 1 :(得分:-3)
长话短说,如果你要做的话,std库有很多东西可以加载到程序中
using namespace std;
如果你有充分的理由加载std库中的每件东西而不是一切,这是一件好事。但是如果你只使用一两个对象[比如你的情况下的cout],你实际上正在做的是将大量的东西加载到你的程序中,这些东西永远不会被需要,因此只占用了空间和资源。没有充分的理由。
操作
using std::cout
防止这个“开销”被调用,因为它告诉程序专门加载std库的cout部分,没有别的,因为你不需要使用任何其他东西。