Bonjour,
Je suis en train de tester le comportement du constructeur par copie sous C++

Voici le code template
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
30
31
32
33
34
35
36
 
#include <iostream>
using namespace std;
 
class A{
public:
	int i;
	A(int i) : i( i ){ cout << "Constructor" << endl;};
	~A(){ cout << "Destructor" << endl;};
	A(const A& a)
	{ 
		cout << "Constructor copy" << endl; 
		i = a.i;
 
	};
	A& operator=(const A& a){cout <<"Operator=" << endl;};
};
 
A foo()
{
	cout << "inside foo" << endl;
	A a( 1 );
	return a;
 
};
 
 
int main()
{
	A b( foo() );
	//A a( b );
 
	cout << " b.i " << b.i << endl;
	system("pause");
	return 0;
}
Le comportement est normal, si je fais Le output est affiché normalement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
inside foo
Constructor
Constructor copy
Destructor
 b.i 1
Press any key to continue . . .
Par contre si je modifie la méthode foo()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
A foo()
{
	cout << "inside foo" << endl;
	return A( 1 );
 
};
Le output est comme ça

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
inside foo
Constructor
 b.i 1
Press any key to continue . . .
La question est la copie se fait par quelle méthode? D'après le output, les valeurs de b sont bien initialisés mais je ne vois pas quelle méthode a été utilisées?

Merci