Bonjour,

Le programme ne produit pas l'output indiqué dans le livre.

Soit le code suivant :

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
37
38
39
40
#include <iostream>
using namespace std ;
class point
{
    int x, y ;
public :
    point (int abs=0, int ord=0)     // constructeur "usuel"
    {
        x=abs ;
        y=ord ;
        cout << "++ Appel Const. usuel   " << this << " " << x << " " << y << "\n" ;
    }
    point (const point & p)          // constructeur de recopie
    {
        x=p.x ;
        y=p.y ;
        cout << "++ Appel Const. recopie " << this << " " << x << " " << y << "\n" ;
    }
    ~point ()
    {
        cout << "-- Appel Destr.         " << this << " " << x << " " << y << "\n" ;
    }
    point symetrique () ;
} ;
 
point point::symetrique ()
{
    point res ;
    res.x = -x ;
    res.y = -y ;
    return res ;
}
 
int main()
{
    point a(1,3), b ;
    cout << "** avant appel de symetrique\n" ;
    b = a.symetrique () ;
    cout << "** apres appel de symetrique\n" ;
}
Il est indiqué que le code doit produire un output proche de ça :

++ Appel Const. usuel 0x61ff10 1 3
++ Appel Const. usuel 0x61ff08 0 0
** avant appel de symetrique
++ Appel Const. usuel 0x61ff18 0 0
++ Appel Const. recopie
-- Appel Destr. 0x61ff18 -1 -3
-- Appel Destr.
** apres appel de symetrique
-- Appel Destr. 0x61ff08 -1 -3
-- Appel Destr. 0x61ff10 1 3
Mais l'output est celui-ci :
++ Appel Const. usuel 0x61ff10 1 3
++ Appel Const. usuel 0x61ff08 0 0
** avant appel de symetrique
++ Appel Const. usuel 0x61ff18 0 0
-- Appel Destr. 0x61ff18 -1 -3
** apres appel de symetrique
-- Appel Destr. 0x61ff08 -1 -3
-- Appel Destr. 0x61ff10 1 3