Utmaning: 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
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
123456789101112131415161718class 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); }
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.
- Implementera en konstruktor som initialiserar alla tre fält:
- Konstruktorn ska ta tre parametrar: en
std::stringfö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.
- Konstruktorn ska ta tre parametrar: en
- Implementera en metod
distanceTosom tar ett annatLocation-objekt som parameter:- Kom åt
x- ochy-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.
- Kom åt
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
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 3.13
Utmaning: 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
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
123456789101112131415161718class 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); }
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.
- Implementera en konstruktor som initialiserar alla tre fält:
- Konstruktorn ska ta tre parametrar: en
std::stringfö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.
- Konstruktorn ska ta tre parametrar: en
- Implementera en metod
distanceTosom tar ett annatLocation-objekt som parameter:- Kom åt
x- ochy-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.
- Kom åt
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
Tack för dina kommentarer!
single