Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Konstruktor och Attribut | Konstruktorer och Destruktorer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C++ OOP

bookUtmaning: Konstruktor och Attribut

En av de främsta användningarna av konstruktorer är att initiera attribut i klassen. En standardkonstruktor kan till exempel användas för att sätta initiala värden. Till exempel:

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

Om du inte anger något värde för namnattributet hos objektet, kommer det att sättas till underfined som standard. Du kan prova att ta bort denna konstruktor för att se vilka förändringar som sker.

Initiering av attribut med konstruktor

Precis som funktioner kan konstruktorer ta parametrar, vilket möjliggör olika argument vid objektets skapande. Du kan även överlagra dem för att hantera varierande antal argument.

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

Swipe to start coding

Föreställ dig att du bygger ett enkelt kartläggningssystem. Du behöver skapa en Location-klass som representerar en punkt på en karta med ett namn och koordinater. Din uppgift är att implementera en konstruktor och en metod för att beräkna avståndet till en annan plats.

  1. Implementera en konstruktor som initialiserar alla tre fält:
    • Konstruktorn ska ta tre parametrar: en std::string för namnet och två double-värden för x- och y-koordinaterna.
    • Inuti konstruktorn ska parametern för namnet tilldelas objektets name-fält.
    • Parametern för x-koordinaten ska tilldelas objektets x-fält.
    • Parametern för y-koordinaten ska tilldelas objektets y-fält.
  2. Implementera en metod distanceTo som tar ett annat Location-objekt som parameter:
    • Kom åt x- och y-koordinaterna för både det aktuella objektet och det andra objektet.
    • Beräkna skillnaden i x-koordinater: other.x - x.
    • Beräkna skillnaden i y-koordinater: other.y - y.
    • Beräkna avståndet med formeln: sqrt(dx * dx + dy * dy).
    • Returnera det beräknade avståndet som en double.

Exempel

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

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 2
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookUtmaning: Konstruktor och Attribut

Svep för att visa menyn

En av de främsta användningarna av konstruktorer är att initiera attribut i klassen. En standardkonstruktor kan till exempel användas för att sätta initiala värden. Till exempel:

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

Om du inte anger något värde för namnattributet hos objektet, kommer det att sättas till underfined som standard. Du kan prova att ta bort denna konstruktor för att se vilka förändringar som sker.

Initiering av attribut med konstruktor

Precis som funktioner kan konstruktorer ta parametrar, vilket möjliggör olika argument vid objektets skapande. Du kan även överlagra dem för att hantera varierande antal argument.

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

Swipe to start coding

Föreställ dig att du bygger ett enkelt kartläggningssystem. Du behöver skapa en Location-klass som representerar en punkt på en karta med ett namn och koordinater. Din uppgift är att implementera en konstruktor och en metod för att beräkna avståndet till en annan plats.

  1. Implementera en konstruktor som initialiserar alla tre fält:
    • Konstruktorn ska ta tre parametrar: en std::string för namnet och två double-värden för x- och y-koordinaterna.
    • Inuti konstruktorn ska parametern för namnet tilldelas objektets name-fält.
    • Parametern för x-koordinaten ska tilldelas objektets x-fält.
    • Parametern för y-koordinaten ska tilldelas objektets y-fält.
  2. Implementera en metod distanceTo som tar ett annat Location-objekt som parameter:
    • Kom åt x- och y-koordinaterna för både det aktuella objektet och det andra objektet.
    • Beräkna skillnaden i x-koordinater: other.x - x.
    • Beräkna skillnaden i y-koordinater: other.y - y.
    • Beräkna avståndet med formeln: sqrt(dx * dx + dy * dy).
    • Returnera det beräknade avståndet som en double.

Exempel

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

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 2
single

single

some-alt