代码之家  ›  专栏  ›  技术社区  ›  quant_dev

我应该在所有地方都使用std::和boost::前缀吗?

c++
  •  7
  • quant_dev  · 技术社区  · 17 年前

    using namespace std; using namespace boost; 。这使我的代码更长,意味着需要更多的打字。我在考虑开始使用“using”声明,但我记得有人反对。推荐的做法是什么?std和boost如此普遍,应该不会有太大危害吧?

    7 回复  |  直到 17 年前
        1
  •  16
  •   Kirill V. Lyadvinsky    17 年前

    我用 using namespace 仅在C++文件中,不在头文件中。此外,在大多数情况下不需要使用hole命名空间。例如,你可以写 using boost::shared_ptr using std::tr1::shared_ptr shared_ptr

    样品:

    #include <iostream>
    
    using std::cout;
    
    int main()
    {
        cout << "test" << std::endl;
        return 0;
    }
    
        2
  •  15
  •   ypnos    17 年前

    Using namespace ... 它不是为了好玩而发明的。

    如果你有充分的理由使用它,那么就这样做(频繁使用这些名称空间中的东西正是一个很好的理由)。不要听那些狂热分子的话,他们告诉你他们出于不明原因不想做的一切——他们自己就是邪恶的。

    http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5

    我已经读过了,仍然决定像你想的那样使用它。现在你可以做出自己明智的决定了:-)

        3
  •  6
  •   anon    17 年前

    我自己的规则是:

    • 在头文件中,所有名称都明确限定,例如。 std::string , std::cout
    • 在源文件中,将常用名称的using子句放在文件顶部,例如使用 std::string;
    • 从不使用 using namespace xxxx; 在生产代码中。
        4
  •  4
  •   xtofl Adam Rosenfield    17 年前

    在阅读代码时,代码中充斥着::std::前缀的事实确实很烦人。但是,您希望尽可能容易地知道符号所在的名称空间。..

    这不就是IDE的工作吗?

    只要我的IDE不支持“查看短类型名”,我就倾向于 using

        5
  •  4
  •   Stack Overflow is garbage    17 年前

    要记住的一个因素是 std 名称空间以这种方式命名,以使其简短。A. std:: 前缀只有5个字符,几乎不是世界末日。这不一样。NET的命名空间,如 System.Collections.Generic 。它的设计便于打字。

    前缀。Boost也不算太糟糕,所以我通常也会把它打出来。

    boost::filesystem 例如)变短( namespace fs = boost::filesystem 例如)

    大量使用typedefs也有帮助。 using 为了它。

    使用 特别是在头文件中,当我使用它们时,我更喜欢将它们放在函数范围内,以避免污染实际的命名空间。

    C++提供了很多工具,可以让你避免指定命名空间,而不会污染全局命名空间。

        6
  •  1
  •   Michael Aaron Safyan    17 年前

    在头文件中,是的。这是因为在头文件中使用“using std::name_of_std_member;”或“using namespace std;”将导致包含该头文件的所有其他文件在全局范围内看到该符号,从而破坏了名称空间的目的。然而,在源文件中,使用“using namespace std;”使该命名空间的符号以“std::”前缀可用是完全可以的。

        7
  •  0
  •   Alexandre C.    15 年前

    我用 using namespace 仅在功能体内

    很少(复制粘贴同事的代码进行模型制作时),我使用 使用命名空间