C++ 使用常量引用和常量变量声明常量文字字符串
我必须用常量文本字符串命名窗口。所有的名字都会被引用,所以我需要用变量来缓存它们。我的问题是 我是否需要将变量声明为常量引用,如下所示C++ 使用常量引用和常量变量声明常量文字字符串,c++,C++,我必须用常量文本字符串命名窗口。所有的名字都会被引用,所以我需要用变量来缓存它们。我的问题是 我是否需要将变量声明为常量引用,如下所示 const string& srcWnd = "Source Window"; 而不是 const string srcWnd = "Source Window"; ? 有什么区别吗?我看不出两者之间有什么显著区别,但我建议使用普通的字符串(选项2): 使用推荐人不会赢得任何东西。如果使用引用,代码会变得更加模糊,因为通过使用依赖的引用。如果有人记不
const string& srcWnd = "Source Window";
而不是
const string srcWnd = "Source Window";
?
有什么区别吗?我看不出两者之间有什么显著区别,但我建议使用普通的
字符串(选项2):
使用推荐人不会赢得任何东西。如果使用引用,代码会变得更加模糊,因为通过使用依赖的引用。如果有人记不清楚生命周期扩展规则,他们可能需要查找这些规则,以确保代码有效。我看不出两者之间有任何显著差异,但我建议使用普通的字符串(选项2):
使用推荐人不会赢得任何东西。如果使用引用,代码会变得更加模糊,因为通过使用依赖的引用。如果有人不清楚地记住生命周期扩展规则,他们可能需要查找这些规则以确保代码有效。定义“需要”-这两种规则都将构造string
对象,您要问的确切区别是什么?就您而言,这两行是相同的。如果您正在构造std::string
类实例,那么数组烘焙字符串文本的内容将始终被复制。既然我们在这里讨论的是窗口名称,那么它们真的必须是std::string
(假设string
上面有std::string
)吗?因为如果您关心效率/避免复制,那么您可能首先要做的是不要让它成为std::string
..@artificialhairlessarmit ok,然后按照下面的答案中建议的const std::string
方法。请注意,全局std::string
几乎必然意味着您正在加载时将字符串从字符串文本对象复制到std::string
所拥有的缓冲区中。如果名称应该是std::string
,这很可能很好…定义“需要”-这两个都将构造string
对象,那么您要问的确切区别是什么?就您而言,这两行是相同的。如果您正在构造std::string
类实例,那么数组烘焙字符串文本的内容将始终被复制。既然我们在这里讨论的是窗口名称,那么它们真的必须是std::string
(假设string
上面有std::string
)吗?因为如果您关心效率/避免复制,那么您可能首先要做的是不要让它成为std::string
..@artificialhairlessarmit ok,然后按照下面的答案中建议的const std::string
方法。请注意,全局std::string
几乎必然意味着您正在加载时将字符串从字符串文本对象复制到std::string
所拥有的缓冲区中。如果名称预期为std::string
,那么无论如何,这很有可能很好…
const string srcWnd = "Source Window";