Niezrozumiała dla mnie obsługa referencji

0

Poniższy program wypisuje tylko "aaa". Z czego to wynika?

#include <string>
#include <iostream>
using namespace std;
class A
{
    const string& str;
    public:
    A(const string& s) : str(s) {}
    void print() {cout << str << endl;}
};

int main()
{
    A("aaa").print();
    A b("bbb");
    b.print();
    return 0;
}
1

Na potrzeby wywołania konstruktora tworzony jest obiekt tymczasowy przyjmowany przez referencję, zaraz po utworzeniu obiektu ten string przestaje istnieć. Składowa A.str wskazuje w kosmos, na pozostałości po obiekcie. Dalej nie wypisuje nic bo pewnie albo ignoruje null pointer, albo zwyczajnie się wykłada na wartości osobliwej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0