名称空间菜鸟问题:共享相同名称空间的两个cpp文件具有相同的变量

时间:2020-06-08 05:51:22

标签: c++ namespaces

命名空间新手问题 我在同一二进制文件中有两个文件。

// class1.cpp
namespace A {
 const std::string k1 = "abc";
}

// class2.cpp

namespace A {
 const std::string k1 = "bcd";
}

它们未在头文件中声明。 他们不会碰撞吗? 我尝试编译,并且可以编译。 我应该将它们放在未命名的命名空间中,但是即使我不这样做,它似乎仍然可以编译。 为什么会这样

编辑:实际上包含了这两个文件以构建相同的二进制文件。

1 个答案:

答案 0 :(得分:2)

这是因为const意味着internal linkage。如果您将A::k1定义为非常量,将会得到关于重复符号的预期错误。

相关问题