lim*_*imp 2 c++ namespaces using
假设我正在使用#include <iostream>C++,我正在制作一个打印语句.我可以选择:
using namespace std;
[...]
cout << "Hello" << endl;
Run Code Online (Sandbox Code Playgroud)
要么
using std::cout;
using std::endl;
[...]
cout << "Hello" << endl;
Run Code Online (Sandbox Code Playgroud)
要么
std::cout << "Hello" << std::endl;
Run Code Online (Sandbox Code Playgroud)
我被引导相信,也许这是不正确的,第一个有点可以避免,因为它会给你的程序增加许多不必要的膨胀.但是,我不知道第二种和第三种风格在性能方面是否存在任何差异.我看到的大多数使用库的代码都倾向于使用第三种风格; 但对我来说,如果在使用第二个方面没有权衡,它似乎是最干净,最易读的方法,特别是如果你对相关的函数或对象进行大量调用.
任何人都可以开导我吗?
无论您选择哪种方式,都没有性能差异或"膨胀".
但是,如果你这样做,例如
using namespace std;
using namespace boost;
Run Code Online (Sandbox Code Playgroud)
两个命名空间中的名称冲突会让你遇到很多麻烦.
我认为版本3,std::cout在任何地方使用等都更容易阅读,并使您免于未来的名称冲突.
如果这不是你想要的,那么选项2是第二好的,因为它只从命名空间引入了一些选择名称.不过,请注意您的示例中,有一个净损失打字,因为使用含有声明更多的字符比你不打字保存std::在代码的其余部分.
我的经验法则:永远不要放入using namespace.h,但随意在.cpp文件中使用它.特别是当它的时候using namespace std!