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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; 
}