【发布时间】:2015-05-30 11:07:14
【问题描述】:
常规字符串字符串字面量具有以下定义:
普通字符串字面量和 UTF-8 字符串字面量也被引用 作为窄字符串文字。窄字符串文字的类型为“数组 n const char”,其中 n 是字符串的大小,定义如下, 并具有静态存储持续时间 (3.7)。
我假设因为它具有静态存储持续时间并且它们通常放置在 ROM 中,所以如果有对它的悬空引用真的没什么大不了的。以下代码发出警告
const char* const & foo()
{
return "Hello";
}
// warning: returning reference to temporary [-Wreturn-local-addr]
但这很好,即使没有 static 关键字
const char* const & foo()
{
const char* const & s = "Hello";
return s;
}
那么这两者有什么区别呢?
【问题讨论】:
-
您的代码没有返回对字符串文字的引用。它返回对指针的引用。您引用的大部分内容与代码无关。
-
你的引用来自哪里?你应该添加它。
-
为什么要返回对字符指针的引用而不是字符指针本身?
标签: c++ temporary-objects