什么是基于堆栈的引用?它们与作为对象成员的引用有什么不同?标准是否谈论这些?什么是基于堆栈的引用?
我碰到这an article来写的香草萨特:
Q1:是下面的代码合法的C++?
// Example 1
string f() { return "abc"; }
void g() {
const string& s = f();
cout << s << endl; // can we still use the "temporary" object?
}
A1:是的。这是一个C++功能... 代码是有效的,并且完全是 显示的功能。
通常情况下,临时对象只会持续到 ,直到它出现的完整 表达式的结尾。 然而,C++故意指定 一个临时对象绑定到 参考为const堆栈 上延长 的寿命临时到 参考本身的寿命,并且因此避免了什么 否则将一个共同的 悬空引用错误。在上面的 示例中,临时返回的 由f()生存,直到结束花括号 大括号。 (注这仅适用于 基于堆栈的引用。它不 工作对于那些成员的对象的 引用。)
从它看起来像它的措辞意味着引用是本地的功能,而不是一个引用,是一类 – vmpstr 2011-01-21 18:29:59