相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

优雅的方法来防止C++中的命名空间中毒

让我们假设,Bob将他的库包装到命名空间"bob"中,并且Alice将通过单个"using namespace bob"使整个命名空间在她自己的函数内可见,而不是每个单独使用"使用bob :: XYZ"项目:

// This file is written by Alice:
#include <iostream>

// She uses Bobs library:
#include "bob.hpp"

int main(void) {
    // Import Bobs library and use it:
    using namespace bob;

    unsigned short value = 50000;
    bob::dump_as_signed(value);

    // Should not be possible without std:: prefix:
    cout << "foobar" << endl;
}
Run Code Online (Sandbox Code Playgroud)

另一方面,Bob试图通过将实现包装在虚拟命名空间中来防止这种情况,并且使这些符号可用,这些符号适用于其他用户:

// This file is written …
Run Code Online (Sandbox Code Playgroud)

c++ coding-style namespaces c++11

2
推荐指数
1
解决办法
614
查看次数

标签 统计

c++ ×2

namespaces ×2

c++-faq ×1

c++11 ×1

coding-style ×1

std ×1

using-directives ×1