ça prend un tour curieux. Non tes questions ne me semblent pas incongrues. En ce
qui me concerne j'ai recherché un site avec forum sur le C++ ouvert à tout
intervenant qui s'inscrit, sans plus.
J'accède au net avec firefox, utilise google pour accéder à l'adresse ci-dessous
https://www.generation-nt.com/reponses/acceder-membre-donnee-039-autre-classe-entraide-4271063.html
et une fois connecté j'utilise l'éditeur "postez une réponse " qui est affiché
au nom de mon avatar, réponse qui doit être validée avant parution.
Est-ce-que ça répond à ta question ?
J'espère ne pas arriver à user ta patience.
ça prend un tour curieux. Non tes questions ne me semblent pas incongrues. En ce
qui me concerne j'ai recherché un site avec forum sur le C++ ouvert à tout
intervenant qui s'inscrit, sans plus.
J'accède au net avec firefox, utilise google pour accéder à l'adresse ci-dessous
https://www.generation-nt.com/reponses/acceder-membre-donnee-039-autre-classe-entraide-4271063.html
et une fois connecté j'utilise l'éditeur "postez une réponse " qui est affiché
au nom de mon avatar, réponse qui doit être validée avant parution.
Est-ce-que ça répond à ta question ?
J'espère ne pas arriver à user ta patience.
ça prend un tour curieux. Non tes questions ne me semblent pas incongrues. En ce
qui me concerne j'ai recherché un site avec forum sur le C++ ouvert à tout
intervenant qui s'inscrit, sans plus.
J'accède au net avec firefox, utilise google pour accéder à l'adresse ci-dessous
https://www.generation-nt.com/reponses/acceder-membre-donnee-039-autre-classe-entraide-4271063.html
et une fois connecté j'utilise l'éditeur "postez une réponse " qui est affiché
au nom de mon avatar, réponse qui doit être validée avant parution.
Est-ce-que ça répond à ta question ?
J'espère ne pas arriver à user ta patience.
Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
De même j'ai cru comprendre que les données membres privées d'une classe étaient
accessibles par les méthodes de cette classe.
Pourquoi dans mon exemple l'accession à la seule donnée membre de la classe "A"
donne en retour, selon le cas ou selon les modalités d'accès , deux résultats
différents. ?
Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
De même j'ai cru comprendre que les données membres privées d'une classe étaient
accessibles par les méthodes de cette classe.
Pourquoi dans mon exemple l'accession à la seule donnée membre de la classe "A"
donne en retour, selon le cas ou selon les modalités d'accès , deux résultats
différents. ?
Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
De même j'ai cru comprendre que les données membres privées d'une classe étaient
accessibles par les méthodes de cette classe.
Pourquoi dans mon exemple l'accession à la seule donnée membre de la classe "A"
donne en retour, selon le cas ou selon les modalités d'accès , deux résultats
différents. ?
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
Le 08/07/2017 09:35, pasletot a écrit :Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède
d'emblée à sonconstructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
Le 08/07/2017 09:35, pasletot a écrit :
Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède
d'emblée à son
constructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
Le 08/07/2017 09:35, pasletot a écrit :Entendons nous bien sur le fond des éclaircissements que je souhaiterais.
J'ai cru comprendre qu'en C++ lors de sa création un objet accède
d'emblée à sonconstructeur.
Pourquoi dans mon exemple "B b" accède d'emblée à celui de la classe "A" ?
L'écriture que tu as donnée était la suivante :
B::B(int z) : m_a(z) {}
Je me demande si dans ce cas-là on ne commence pas par créer un m_a (de
de type A) *avant* d'appeler le constructeur de B en lui passant le m_a
déjà créé.
Bonjour,Bonjour Olivier, Bonjour espie
Débutant C++ circonspect.
Hypothèse : obtenir en retour de « a.foo() » et de «
b.bar(« ) une seule valeur de « m_x ».
Valeurs obtenues en retour de a.foo() et de b.bar() : m_x = 55 ; et
m_x = 88 .
Le programme sous forme condensée.
int main()
{
A a(55); // m_x
B b(88); // m_a
a.foo();
b.bar();
return 0;
}
// Classe A // attribut « int m_x ;
»
A::A(int x): m_x(x) {} // x = 55
int A::foo() const
{ return m_x; }
// Classe B // attribut « A m_a
; »
B::B(int z) : m_a(z) {} // z = 88
int B::bar() const
{ return m_a.foo();}
Résultats partiels obtenus sur console .
A a ; // Création objet A
Constructeur de m_x ; // oui
Valeur de « m_x » = 55 ;
Adresse de m_x et de « a » 0x28FF0C
B b ; // Création objet B
Constructeur de m_x ; // ??
Valeur de « m_x » = 88
Adresse de m_x et de « b » 0x28FF08
Constructeur de m_a
Adresse de m_a dans B ::B() 0x28FF08
La réinitialisation de « m_x » sous forme de copie de
« m_x » lors de l’appel de « B b » explique (pour
moi) les résultats obtenus, y compris lorsque « m_x » est
initialisé par int « m_x(int) » (retours de la même
valeur).
Par contre l’appel du constructeur de « A » par « B b()
» et la réinitialisation d’une « m_x » à
la valeur de « m_a » me désorientent.
Pouvez-vous m’apporter des éléments de réponse sur
la raison pour laquelle « B b » appelle le constructeur de «
A » et réinitialise « m_x » lorsque c’est
possible ( « x » non int) ?
Merci
Bonjour,Bonjour Olivier, Bonjour espie
Débutant C++ circonspect.
Hypothèse : obtenir en retour de « a.foo() » et de «
b.bar(« ) une seule valeur de « m_x ».
Valeurs obtenues en retour de a.foo() et de b.bar() : m_x = 55 ; et
m_x = 88 .
Le programme sous forme condensée.
int main()
{
A a(55); // m_x
B b(88); // m_a
a.foo();
b.bar();
return 0;
}
// Classe A // attribut « int m_x ;
»
A::A(int x): m_x(x) {} // x = 55
int A::foo() const
{ return m_x; }
// Classe B // attribut « A m_a
; »
B::B(int z) : m_a(z) {} // z = 88
int B::bar() const
{ return m_a.foo();}
Résultats partiels obtenus sur console .
A a ; // Création objet A
Constructeur de m_x ; // oui
Valeur de « m_x » = 55 ;
Adresse de m_x et de « a » 0x28FF0C
B b ; // Création objet B
Constructeur de m_x ; // ??
Valeur de « m_x » = 88
Adresse de m_x et de « b » 0x28FF08
Constructeur de m_a
Adresse de m_a dans B ::B() 0x28FF08
La réinitialisation de « m_x » sous forme de copie de
« m_x » lors de l’appel de « B b » explique (pour
moi) les résultats obtenus, y compris lorsque « m_x » est
initialisé par int « m_x(int) » (retours de la même
valeur).
Par contre l’appel du constructeur de « A » par « B b()
» et la réinitialisation d’une « m_x » à
la valeur de « m_a » me désorientent.
Pouvez-vous m’apporter des éléments de réponse sur
la raison pour laquelle « B b » appelle le constructeur de «
A » et réinitialise « m_x » lorsque c’est
possible ( « x » non int) ?
Merci
Bonjour,Bonjour espie ;
Débutant C++ circonspect.
Hypothèse : obtenir en retour de « a.foo() » et de «
b.bar(« ) une seule valeur de « m_x ».
Valeurs obtenues en retour de a.foo() et de b.bar() : m_x = 55 ; et
m_x = 88 .
Le programme sous forme condensée.
int main()
{
A a(55); // m_x
B b(88); // m_a
a.foo();
b.bar();
return 0;
}
// Classe A // attribut « int m_x ;
»
A::A(int x): m_x(x) {} // x = 55
int A::foo() const
{ return m_x; }
// Classe B // attribut « A m_a
; »
B::B(int z) : m_a(z) {} // z = 88
int B::bar() const
{ return m_a.foo();}
Résultats partiels obtenus sur console .
A a ; // Création objet A
Constructeur de m_x ; // oui
Valeur de « m_x » = 55 ;
Adresse de m_x et de « a » 0x28FF0C
B b ; // Création objet B
Constructeur de m_x ; // ??
Valeur de « m_x » = 88
Adresse de m_x et de « b » 0x28FF08
Constructeur de m_a
Adresse de m_a dans B ::B() 0x28FF08
La réinitialisation de « m_x » sous forme de copie de
« m_x » lors de l’appel de « B b » explique (pour
moi) les résultats obtenus, y compris lorsque « m_x » est
initialisé par int « m_x(int) » (retours de la même
valeur).
Par contre l’appel du constructeur de « A » par « B b()
» et la réinitialisation d’une « m_x » à
la valeur de « m_a » me désorientent.
Pouvez-vous m’apporter des éléments de réponse sur
la raison pour laquelle « B b » appelle le constructeur de «
A » et réinitialise « m_x » lorsque c’est
possible ( « x » non int) ?
Merci
Bonjour,Bonjour espie ;
Débutant C++ circonspect.
Hypothèse : obtenir en retour de « a.foo() » et de «
b.bar(« ) une seule valeur de « m_x ».
Valeurs obtenues en retour de a.foo() et de b.bar() : m_x = 55 ; et
m_x = 88 .
Le programme sous forme condensée.
int main()
{
A a(55); // m_x
B b(88); // m_a
a.foo();
b.bar();
return 0;
}
// Classe A // attribut « int m_x ;
»
A::A(int x): m_x(x) {} // x = 55
int A::foo() const
{ return m_x; }
// Classe B // attribut « A m_a
; »
B::B(int z) : m_a(z) {} // z = 88
int B::bar() const
{ return m_a.foo();}
Résultats partiels obtenus sur console .
A a ; // Création objet A
Constructeur de m_x ; // oui
Valeur de « m_x » = 55 ;
Adresse de m_x et de « a » 0x28FF0C
B b ; // Création objet B
Constructeur de m_x ; // ??
Valeur de « m_x » = 88
Adresse de m_x et de « b » 0x28FF08
Constructeur de m_a
Adresse de m_a dans B ::B() 0x28FF08
La réinitialisation de « m_x » sous forme de copie de
« m_x » lors de l’appel de « B b » explique (pour
moi) les résultats obtenus, y compris lorsque « m_x » est
initialisé par int « m_x(int) » (retours de la même
valeur).
Par contre l’appel du constructeur de « A » par « B b()
» et la réinitialisation d’une « m_x » à
la valeur de « m_a » me désorientent.
Pouvez-vous m’apporter des éléments de réponse sur
la raison pour laquelle « B b » appelle le constructeur de «
A » et réinitialise « m_x » lorsque c’est
possible ( « x » non int) ?
Merci