ma_classe c(c1); // instanciation de c a partir de c1
ma_classe cÁ;
A noter que si c1 est du même type que c, alors les deux écritures sont équivalentes.
ok, alors si j'avais eu par exemple :
class Entier { int i ; public : Entier(int j) { i=j ; return ; } } ;
et ensuite :
int j=2 ; Entier e1, e2=j ; e1=j ;
j'ai du mal a comprendre ce qui se passe au niveau du constructeur, quelle est la différence dans les cas de e1 et e2 ? quand Entier() est-il appelé ? comment prend-il son paramètre ?
ma_classe c(c1); // instanciation de c a partir de c1
ma_classe cÁ;
A noter que si c1 est du même type que c, alors les deux écritures
sont équivalentes.
ok, alors si j'avais eu par exemple :
class Entier
{
int i ;
public :
Entier(int j)
{
i=j ;
return ;
}
} ;
et ensuite :
int j=2 ;
Entier e1, e2=j ;
e1=j ;
j'ai du mal a comprendre ce qui se passe au niveau du constructeur,
quelle est la différence dans les cas de e1 et e2 ? quand Entier()
est-il appelé ? comment prend-il son paramètre ?
ma_classe c(c1); // instanciation de c a partir de c1
ma_classe cÁ;
A noter que si c1 est du même type que c, alors les deux écritures sont équivalentes.
ok, alors si j'avais eu par exemple :
class Entier { int i ; public : Entier(int j) { i=j ; return ; } } ;
et ensuite :
int j=2 ; Entier e1, e2=j ; e1=j ;
j'ai du mal a comprendre ce qui se passe au niveau du constructeur, quelle est la différence dans les cas de e1 et e2 ? quand Entier() est-il appelé ? comment prend-il son paramètre ?
C'est l'opérateur d'affectation qui est appelé. Un constructeur n'est appelé
qu'une fois par objet (à sa création).
A ce propos, j'aurais une question : est-il possible, en dehors de la définition d'un objet, d'appeler explicitement le constructeur ? (Visiblement, VC++ ne l'accepte pas...)
Ex :
class MyClass { MyClass(int x); //constructeur };
MyClass myCl(5);
// est-il possible de faire : myCl.MyClass(6);
Merci d'avance....
C'est l'opérateur d'affectation qui est appelé. Un constructeur n'est
appelé
qu'une fois par objet (à sa création).
A ce propos, j'aurais une question : est-il possible, en dehors de la
définition d'un objet, d'appeler explicitement le constructeur ?
(Visiblement, VC++ ne l'accepte pas...)
C'est l'opérateur d'affectation qui est appelé. Un constructeur n'est appelé
qu'une fois par objet (à sa création).
A ce propos, j'aurais une question : est-il possible, en dehors de la définition d'un objet, d'appeler explicitement le constructeur ? (Visiblement, VC++ ne l'accepte pas...)
Ex :
class MyClass { MyClass(int x); //constructeur };
MyClass myCl(5);
// est-il possible de faire : myCl.MyClass(6);
Merci d'avance....
Fabien LE LEZ
On Sat, 11 Oct 2003 17:20:33 +0200, "Spoofix" <spoofix[ENLEVEZ_CA]@free.fr> wrote:
MyClass myCl(5);
// est-il possible de faire : myCl.MyClass(6);
Non. C'est possible dans certains cas, mais c'est à peu près toujours une très mauvaise idée.
Non. C'est possible dans certains cas, mais c'est à peu près toujours une très mauvaise idée.
Ok merci !!! Et c'est ds quels cas, que c'est possible ?
Fabien LE LEZ
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix" <spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix"
<spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler
le destructeur, puis le constructeur. Mais bon, c'est de la sale
bidouille -- je préfère ne jamais essayer ;-)
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix" <spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
Merci pour tes reponses ultra rapides ! Bye
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler
le destructeur, puis le constructeur. Mais bon, c'est de la sale
bidouille -- je préfère ne jamais essayer ;-)
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
Merci pour tes reponses ultra rapides ! Bye
Alexandre
"Fabien LE LEZ" a écrit dans le message de news:
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix" <spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
-- Comme ça ?
OBJET *ptr; ptr = new OBJET ; // appel du constructeur delete ptr; // appel du destructeur ptr = new OBJET; // appel du constructeur
Vu qu'il s'agit d'un nouvel objet, le constructeur n'est donc appelé qu'une seule fois par instance. Il est impossible de le rappeler (alors que c'est faisable avec le destructeur)
"Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message de
news:9lbgovcf0oskc7bueginne3cmg0uthnmlf@4ax.com...
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix"
<spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler
le destructeur, puis le constructeur. Mais bon, c'est de la sale
bidouille -- je préfère ne jamais essayer ;-)
--
Comme ça ?
OBJET *ptr;
ptr = new OBJET ; // appel du constructeur
delete ptr; // appel du destructeur
ptr = new OBJET; // appel du constructeur
Vu qu'il s'agit d'un nouvel objet, le constructeur n'est donc appelé qu'une
seule fois par instance. Il est impossible de le rappeler (alors que c'est
faisable avec le destructeur)
On Sat, 11 Oct 2003 18:10:05 +0200, "Spoofix" <spoofix[ENLEVEZ_CA]@free.fr> wrote:
Et c'est ds quels cas, que c'est possible ?
Quand on a un pointeur sur un objet valide, on peut (je crois) appeler le destructeur, puis le constructeur. Mais bon, c'est de la sale bidouille -- je préfère ne jamais essayer ;-)
-- Comme ça ?
OBJET *ptr; ptr = new OBJET ; // appel du constructeur delete ptr; // appel du destructeur ptr = new OBJET; // appel du constructeur
Vu qu'il s'agit d'un nouvel objet, le constructeur n'est donc appelé qu'une seule fois par instance. Il est impossible de le rappeler (alors que c'est faisable avec le destructeur)