ссылка на временный объект
От: Angler Россия  
Дата: 29.11.05 11:23
Оценка:
Наверное нужно было в "о жизни" постить

вот пример:


#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).
Как и чем это можно объяснить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.