Bunu neden yapar:
#include <string>
#include <iostream>
using namespace std;
class Sandbox
{
public:
Sandbox(const string& n) : member(n) {}
const string& member;
};
int main()
{
Sandbox sandbox(string("four"));
cout << "The answer is: " << sandbox.member << endl;
return 0;
}
Çıktı verin:
Cevap:
Onun yerine:
Cevap: dört
SandBox::member
okunduğunda geçici dize hala canlıdır .
string("four")
ifadenin neden Sandbox
yapıcıdan çıktıktan sonra değil, tam ifadenin sonunda yok edildiğini açıklayabilir misiniz ? Potatoswatter'ın cevabı: Bir
cout << "The answer is: " << Sandbox(string("four")).member << endl;
olsaydınız, o zaman çalışması garanti edilirdi.