在C++中,为了避免命名冲突,我们可以通过namespace对各个类库、方法进行分割命名空间。
如下所示:
#include <iostream> #include <string> namespace fruit { void printColor(const std::string& name) { std::cout << "fruit name: " << name << std::endl; } } namespace vegetable { void printColor(const char* name) { std::cout << "vegetable name: " << name << std::endl; } } using namespace fruit; using namespace vegetable; int main() { printColor("apple"); printColor(std::string("apple2")); }
运行结果:
由于此处的两个函数的参数不一致,发生了重载。同样,如果在我们的头文件中使用了using namespace std,
就无意中导致扩大了std命名空间的影响到的域,导致std中的类、方法与其它域中同名的类、方法产生冲突混乱,
实际使用的类、方法可能并不是我们希望使用的。给调试工作带来了不必要的麻烦。