Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Constructeur et Attributs | Constructeurs et Destructeurs
Programmation Orientée Objet en C++

bookDéfi : Constructeur et Attributs

L'une des principales utilisations des constructeurs est d'initialiser les attributs de la classe. Un constructeur par défaut, par exemple, peut être utilisé pour définir des valeurs initiales. Par exemple :

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Si aucune valeur n'est spécifiée pour l'attribut name de l'objet, il sera défini sur underfined par défaut. Il est possible de supprimer ce constructeur pour observer les changements qui en résultent.

Initialisation des attributs avec le constructeur

À l'instar des fonctions, les constructeurs peuvent accepter des paramètres, permettant ainsi de fournir différents arguments lors de la création d'un objet. Il est également possible de les surcharger pour gérer un nombre variable d'arguments.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Tâche

Swipe to start coding

Imaginez que vous développez un système de cartographie simple. Vous devez créer une classe Location qui représente un point sur une carte avec un nom et des coordonnées. Votre tâche consiste à implémenter un constructeur et une méthode pour calculer la distance jusqu'à un autre emplacement.

  1. Implémenter un constructeur qui initialise les trois champs :
    • Le constructeur doit prendre trois paramètres : un std::string pour le nom, et deux valeurs double pour les coordonnées x et y.
    • À l'intérieur du constructeur, affectez le paramètre du nom au champ name de l'objet.
    • Affectez le paramètre de la coordonnée x au champ x de l'objet.
    • Affectez le paramètre de la coordonnée y au champ y de l'objet.
  2. Implémentez une méthode distanceTo qui prend un autre objet Location en paramètre :
    • Accédez aux coordonnées x et y de l'objet courant et de l'autre objet.
    • Calculez la différence des coordonnées x : other.x - x.
    • Calculez la différence des coordonnées y : other.y - y.
    • Calculez la distance en utilisant la formule : sqrt(dx * dx + dy * dy).
    • Retournez la distance calculée en tant que double.

Exemple

Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and Location("Library", 2.0, 3.0) -> 5.0

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain what a constructor is in more detail?

What does it mean to overload a constructor?

Can you give an example of initializing attributes with a constructor?

close

bookDéfi : Constructeur et Attributs

Glissez pour afficher le menu

L'une des principales utilisations des constructeurs est d'initialiser les attributs de la classe. Un constructeur par défaut, par exemple, peut être utilisé pour définir des valeurs initiales. Par exemple :

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Si aucune valeur n'est spécifiée pour l'attribut name de l'objet, il sera défini sur underfined par défaut. Il est possible de supprimer ce constructeur pour observer les changements qui en résultent.

Initialisation des attributs avec le constructeur

À l'instar des fonctions, les constructeurs peuvent accepter des paramètres, permettant ainsi de fournir différents arguments lors de la création d'un objet. Il est également possible de les surcharger pour gérer un nombre variable d'arguments.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Tâche

Swipe to start coding

Imaginez que vous développez un système de cartographie simple. Vous devez créer une classe Location qui représente un point sur une carte avec un nom et des coordonnées. Votre tâche consiste à implémenter un constructeur et une méthode pour calculer la distance jusqu'à un autre emplacement.

  1. Implémenter un constructeur qui initialise les trois champs :
    • Le constructeur doit prendre trois paramètres : un std::string pour le nom, et deux valeurs double pour les coordonnées x et y.
    • À l'intérieur du constructeur, affectez le paramètre du nom au champ name de l'objet.
    • Affectez le paramètre de la coordonnée x au champ x de l'objet.
    • Affectez le paramètre de la coordonnée y au champ y de l'objet.
  2. Implémentez une méthode distanceTo qui prend un autre objet Location en paramètre :
    • Accédez aux coordonnées x et y de l'objet courant et de l'autre objet.
    • Calculez la différence des coordonnées x : other.x - x.
    • Calculez la différence des coordonnées y : other.y - y.
    • Calculez la distance en utilisant la formule : sqrt(dx * dx + dy * dy).
    • Retournez la distance calculée en tant que double.

Exemple

Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and Location("Library", 2.0, 3.0) -> 5.0

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
single

single

some-alt