Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Constructor en Attributen | Constructors en Destructors
C++ OOP

bookUitdaging: Constructor en Attributen

Een van de belangrijkste toepassingen van constructors is het initialiseren van attributen van de klasse. Een standaardconstructor kan bijvoorbeeld worden gebruikt om beginwaarden in te stellen. Bijvoorbeeld:

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; }

Als je geen waarde opgeeft voor het name-attribuut van het object, wordt deze standaard ingesteld op underfined. Je kunt proberen deze constructor te verwijderen om te zien welke wijzigingen optreden.

Attributen initialiseren met constructor

Net als functies kunnen constructors parameters accepteren, waardoor verschillende argumenten mogelijk zijn bij het aanmaken van een object. Je kunt ze ook overbelasten om verschillende aantallen argumenten te verwerken.

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); }
Taak

Swipe to start coding

Stel je voor dat je een eenvoudig kaartsysteem bouwt. Je moet een Location-klasse maken die een punt op een kaart weergeeft met een naam en coördinaten. Je opdracht is om een constructor te implementeren en een methode om de afstand tot een andere locatie te berekenen.

  1. Implementeer een constructor die alle drie de velden initialiseert:
    • De constructor moet drie parameters accepteren: een std::string voor de naam en twee double-waarden voor de x- en y-coördinaten.
    • Wijs binnen de constructor de parameter voor de naam toe aan het name-veld van het object.
    • Wijs de parameter voor de x-coördinaat toe aan het x-veld van het object.
    • Wijs de parameter voor de y-coördinaat toe aan het y-veld van het object.
  2. Implementeer een methode distanceTo die een ander Location-object als parameter neemt:
    • Benader de x- en y-coördinaten van zowel het huidige object als het andere object.
    • Bereken het verschil in de x-coördinaten: other.x - x.
    • Bereken het verschil in de y-coördinaten: other.y - y.
    • Bereken de afstand met de formule: sqrt(dx * dx + dy * dy).
    • Retourneer de berekende afstand als een double.

Example

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

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

bookUitdaging: Constructor en Attributen

Veeg om het menu te tonen

Een van de belangrijkste toepassingen van constructors is het initialiseren van attributen van de klasse. Een standaardconstructor kan bijvoorbeeld worden gebruikt om beginwaarden in te stellen. Bijvoorbeeld:

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; }

Als je geen waarde opgeeft voor het name-attribuut van het object, wordt deze standaard ingesteld op underfined. Je kunt proberen deze constructor te verwijderen om te zien welke wijzigingen optreden.

Attributen initialiseren met constructor

Net als functies kunnen constructors parameters accepteren, waardoor verschillende argumenten mogelijk zijn bij het aanmaken van een object. Je kunt ze ook overbelasten om verschillende aantallen argumenten te verwerken.

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); }
Taak

Swipe to start coding

Stel je voor dat je een eenvoudig kaartsysteem bouwt. Je moet een Location-klasse maken die een punt op een kaart weergeeft met een naam en coördinaten. Je opdracht is om een constructor te implementeren en een methode om de afstand tot een andere locatie te berekenen.

  1. Implementeer een constructor die alle drie de velden initialiseert:
    • De constructor moet drie parameters accepteren: een std::string voor de naam en twee double-waarden voor de x- en y-coördinaten.
    • Wijs binnen de constructor de parameter voor de naam toe aan het name-veld van het object.
    • Wijs de parameter voor de x-coördinaat toe aan het x-veld van het object.
    • Wijs de parameter voor de y-coördinaat toe aan het y-veld van het object.
  2. Implementeer een methode distanceTo die een ander Location-object als parameter neemt:
    • Benader de x- en y-coördinaten van zowel het huidige object als het andere object.
    • Bereken het verschil in de x-coördinaten: other.x - x.
    • Bereken het verschil in de y-coördinaten: other.y - y.
    • Bereken de afstand met de formule: sqrt(dx * dx + dy * dy).
    • Retourneer de berekende afstand als een double.

Example

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

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2
single

single

some-alt