Наверное нужно было в "о жизни" постить
вот пример:
#include <string>
#include <iostream>
class Dummy
{
public:
explicit Dummy(const std::string &str)
: str(str)
{
}
const std::string &get() const
{
return str;
}
private:
const std::string &str;
};
std::string getString(const std::string &str)
{
return str;
}
int main()
{
//1
const std::string &str = getString("test");
std::cout << str << "\n";
//2
Dummy d("test");
std::cout << d.get() << "\n";
}
Компилирую MSVC71, получаю, что первый временный объект живет, пока жива ссылка, в то время как второй временный объект убивается, еще при жизни Dummy(видимо сразу после вызова конструктора Dummy).
Как и чем это можно объяснить?