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