我知道static const class成员只能在标题中初始化.名称空间是否相同?例如,写入是否有效:
namehuman.hpp
namespace namehuman
{
string const human("human");
}
Run Code Online (Sandbox Code Playgroud)
main.cpp
#include "namehuman.hpp"
cout << namehuman::human << endl;
Run Code Online (Sandbox Code Playgroud)
我想知道包括头文件在内的所有文件是否都有自己的string人工副本,或者人类是否是真正的全局变量(不会多次复制).为了避免每个包含文件的副本,我是否有义务使用extern?
常量具有内部联系.因此,任何包含带有常量定义的头的编译单元都将拥有自己的对象实例.
根据C++标准(3.5程序和链接)
3具有命名空间范围(3.3.6)的名称具有内部链接(如果它的名称)
...
- 一个非易失性变量,显式声明为const或constexpr,既未显式声明为extern,也未声明为具有外部链接; 要么
如果需要具有外部链接的常量,则必须使用说明符声明它extern,并在编译单元中定义它.
| 归档时间: |
|
| 查看次数: |
3858 次 |
| 最近记录: |