【发布时间】:2018-05-02 09:18:32
【问题描述】:
我有一个头文件,我在其中声明如下变量:
//Constants.h
const std::string& binaryName = "ApplicationGateway";
const std::string& binaryMode = "Maintenance";
但是,当我将此文件包含在多个 cpp 文件中时说 first.cpp 和 second.cpp 我得到多个定义错误并且我找不到相同的原因,因为我的理解是 const 变量具有内部链接。
所以我的问题是 const 引用是否没有内部链接,如果没有,我们如何在需要包含在多个 cpp 文件中的头文件中拥有 const 引用。
【问题讨论】:
-
只是好奇 - 为什么要存储对未命名字符串对象的引用而不是存储字符串值?
-
bcoz 我的理解是字符串文字存储在只读内存段中,当我们按值存储时,它将被复制到该 const 字符串中,所以只想避免复制
-
不幸的是,这段代码将首先创建一个副本,然后存储对该副本的引用。
-
您能否提供更多细节以便更好地理解以及为什么在我们直接创建对字符串变量的引用时会首先创建副本
-
不,它不会做额外的复制,字符串对象是就地创建的。这是一个旧答案(对一个完全不同的问题),显示how little code it actually takes to create a std::string