C++ Implémentation Constructeur - Help
MeetTheTaunt
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,
Je lis le livre "Initiez-vous à la programmation en C++", je suis rendu au chapitre 11 " Constructeurs, opérateurs et pointeurs".
Jusqu'à maintenant, j'ai vu que l'on initialisais un constructeur comme ceci :
-
-
-
Maintenant en continuant à lire, j'ai aperçu que le livre a employé une méthode que je n'ai jamais vu pour implémenter un constructeur. Le résultat est le même mais j'aurais besoin d'explication.
-
-
Je trouve cela bizarre, car dans le livre il n'en parle même pas et ne me donne aucune explication. Y a t'il une différence entre les deux ?
Pourquoi ce {} a la fin ?
Pourquoi ce : après les parenthèses ?
Une virgule au lieu d'un point virgule ? :(
Je lis le livre "Initiez-vous à la programmation en C++", je suis rendu au chapitre 11 " Constructeurs, opérateurs et pointeurs".
Jusqu'à maintenant, j'ai vu que l'on initialisais un constructeur comme ceci :
-
// Déclaration Classe
class Rectanglez
{
public:
Rectanglez(int largeur, int hauteur);
~Rectanglez() {}
void DessinerForme(int uneLargeur, int uneHauteur,
bool ValsActuelles = false) const;
private:
int saLargeur;
int saHauteur;
};
-
// Implémentation Constructeur (Méthode que je connais)
Rectanglez::Rectanglez(int largeur, int hauteur)
{
saLargeur = largeur;
saHauteur = hauteur;
}
-
Maintenant en continuant à lire, j'ai aperçu que le livre a employé une méthode que je n'ai jamais vu pour implémenter un constructeur. Le résultat est le même mais j'aurais besoin d'explication.
-
// Implémentation Constructeur (Méthode que je ne connais pas)
Rectanglez::Rectanglez(int largeur, int hauteur):
saLargeur(largeur),
saHauteur(hauteur)
{}
-
Je trouve cela bizarre, car dans le livre il n'en parle même pas et ne me donne aucune explication. Y a t'il une différence entre les deux ?
Pourquoi ce {} a la fin ?
Pourquoi ce : après les parenthèses ?
Une virgule au lieu d'un point virgule ? :(
A voir également:
- C++ Implémentation Constructeur - Help
- Constructeur automobile - Guide
- Adresse mac constructeur - Guide
- Constructeur agrandissement maison - Guide
- Constructeur copie ... ✓ - Forum Java
- Constructeur java ✓ - Forum Programmation
1 réponse
Salut,
Je ne connais pas ce livre, mais ce que tu mentionnes s'appelle "Member initializer list" :
https://en.cppreference.com/w/cpp/language/constructor
C'est la façon orthodoxe et semble-t-il plus efficace en ressources (que l'initialisation dans le corps du constructeur) de donner dans le constructeur d'une classe ou d'une structure C++, des valeurs initiales aux membres. La liste d'initialisation est intégrée à la suite de la définition du constructeur, séparée par ":" et avant le corps du constructeur lui même.
Dans le standard C++11, c'est § 12.6.2 (je n'ai pas les autres standards sous la main).
Sur la question de l'usage de ce procédé par rapport à l'initialisation dans le corps du constructeur, vois par exemple :
http://www.parashift.com/c++-faq/init-lists.html
https://forums.codeguru.com/showthread.php?464084-C-General-What-is-the-initialization-list-and-why-should-I-use-it
Pourquoi ce {} a la fin ?
Parce que dans ton code, tu ne fais rien de particulier en plus, dans le corps du constructeur.
Dal
Je ne connais pas ce livre, mais ce que tu mentionnes s'appelle "Member initializer list" :
https://en.cppreference.com/w/cpp/language/constructor
C'est la façon orthodoxe et semble-t-il plus efficace en ressources (que l'initialisation dans le corps du constructeur) de donner dans le constructeur d'une classe ou d'une structure C++, des valeurs initiales aux membres. La liste d'initialisation est intégrée à la suite de la définition du constructeur, séparée par ":" et avant le corps du constructeur lui même.
Dans le standard C++11, c'est § 12.6.2 (je n'ai pas les autres standards sous la main).
Sur la question de l'usage de ce procédé par rapport à l'initialisation dans le corps du constructeur, vois par exemple :
http://www.parashift.com/c++-faq/init-lists.html
https://forums.codeguru.com/showthread.php?464084-C-General-What-is-the-initialization-list-and-why-should-I-use-it
Pourquoi ce {} a la fin ?
Parce que dans ton code, tu ne fais rien de particulier en plus, dans le corps du constructeur.
Dal