命名空间信息损害了 C++ 的可读性

Nou*_*jik 4 c++ readability namespaces visual-studio name-lookup

我是新手C++并且有C. 对我来说很难采用的一件事是频繁使用作用域运算符,例如std::,我会通过将其放在using namespace std源代码的开头来避免使用它,但很多人不使用这种方法,因为他们认为这将来可能会咬他们。

另外,visual-studio还沿着范围运算符显示错误/警告消息,例如

cannot convert from 'std::vector<int,std::allocator<_Ty>> *' to 'std::shared_ptr<std::vector<int,std::allocator<_Ty>>>'
Run Code Online (Sandbox Code Playgroud)

虽然上面的消息很冗长,但是读起来很痛苦(?)。我认为如果采用这种形式,阅读起来会很简单

cannot convert from 'vector<int,allocator<_Ty>> *' to 'shared_ptr<vector<int,allocator<_Ty>>>'
Run Code Online (Sandbox Code Playgroud)

1) 为什么每个人都使用std::, cout, cinendl为什么有人会把这些标签用于其他目的呢?

2)他们在 Visual Studio 中的解决方法是不向我显示带有前缀的错误/消息/语法突出显示吗std::

Adr*_*ica 5

尽管正如评论中指出的那样, code likeusing namespace std;认为是不好的做法std::cout,但是您可以通过在语句中指定单独的作用域元素来避免在代码 like 中重复使用名称空间前缀using

像这样的东西:

using std::cout;  //
using std::cin;   // You can, from then on, just use 'cout', 'cin' and 'endl'
using std::endl;  //
Run Code Online (Sandbox Code Playgroud)

对于非常常见的元素(如上面代码中列出的元素),您可以将相关行放入using头文件中 - 通常是用于构建预编译头的“全局”头。