编译以下内容:
document.getElementsByClassName()
使用clang
产生以下警告<modal>
<a slot="trigger">Show Modal</a>
<h3 slot="header">My Heading</h3>
<p slot="body">Here is the body of the modal.</p>
<div slot="footer">
Here is the footer, with a button to close the modal.
<button class="close-modal">Close Modal</button>
</div>
</modal>
这有道理,但C ++ 11中的新措辞似乎意味着将一个const引用返回到一个值会延长它的生命周期,直到引用超出范围?
目前的草稿并不适合我,所以我会引用cppreference.com:
临时对象的生命周期可以通过绑定到const左值引用或右值引用来扩展(自C ++ 11起),请参阅参考初始化以获取详细信息。
答案 0 :(得分:2)
不,“返回引用”并不会神奇地延长任何生命周期。
生命周期延长的唯一时间是prvalue(或引用prvalue成员的xvalue)绑定到引用变量,并且prvalue的生命周期延长到变量:
struct Foo{};
{
const auto & r = Foo{}; // Foo object not destroyed at semicolon...
// ...
}
// ... but is destroyed only here.
您的prvalue不受任何变量的约束,因此不会延长生命周期。
(另请注意,非静态类数据成员不会将此作为“变量”计算,因此如果您的类恰好有引用成员,也无法通过构造函数初始化程序列表延长生命周期。)