petit excercice piège vector et références
Bonjour,
je suis tombé sur ce problème récemment, alors je vous le propose sous forme d'exercice. Je vous préviens, c'est tordu (en plus j'ai rajouté du bruit).
Q1: qu'affiche le programme suivant?
Q2: pourquoi?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Foo
{
Foo( const string & name = "n/a" ) : name(name) {}
string name;
};
int main()
{
vector<Foo> fooes;
fooes.push_back( Foo( "first foo" ) );
Foo & first_foo = fooes.back();
Foo & second_foo = first_foo;
fooes.emplace_back( Foo( "second foo" ) );
second_foo = fooes.back();
cout << "foo1: " << first_foo.name << endl;
cout << "foo2: " << second_foo.name << endl;
getchar();
return 0;
} |