С вопросом переполнения стека Does a const reference prolong the life of a temporary?, я понимаю, как ссылка const продлевает срок службы временного объекта.Ссылка rvalue в C++ продлевает срок службы временного объекта
Я знаю, что ссылка rvalue может продлить срок службы временного объекта, но я не знаю, есть ли какая-то разница.
Так что, если я такой код:
#include <string>
#include <iostream>
using namespace std;
class Sandbox
{
public:
Sandbox(string&& n) : member(n) {}
const string& member;
};
int main()
{
Sandbox sandbox(string("four"));
cout << "The answer is: " << sandbox.member << endl;
return 0;
}
Будет ли она работать или будет иметь такую же ошибку, как по ссылке выше?
Что делать, если код выглядит следующим образом?
class Sandbox
{
public:
Sandbox(string&& n) : member(move(n)) {}
const string&& member;
};
Будет ли это работать?
время жизни временных совпадений время жизни ссылки, которая привязывается непосредственно к ней, которая является 'n' (не' member') –
@ M.M Будет ли 'string && member' иметь смысл? – songyuanyao
@ M.M Я имел в виду, что смена справки rvalue 'member' делает код OP действительным? Временная «строка» («четыре») жизни продлевается до утверждения cout? – songyuanyao