Udfordring: Konstruktør og Attributter
En af de primære anvendelser af konstruktører er at initialisere attributter for klassen. En standardkonstruktør kan for eksempel bruges til at sætte startværdier. For eksempel:
main.cpp
1234567891011121314#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }
Hvis du ikke angiver en værdi for name-attributten for objektet, vil den blive sat til underfined som standard. Du kan prøve at fjerne denne konstruktør for at se, hvilke ændringer der opstår.
Initialisering af attributter med konstruktør
Ligesom funktioner kan konstruktører tage parametre, hvilket muliggør forskellige argumenter under oprettelsen af objekter. Du kan også overbelaste dem for at håndtere varierende antal argumenter.
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
Forestil dig, at du bygger et simpelt kortlægningssystem. Du skal oprette en Location-klasse, der repræsenterer et punkt på et kort med et navn og koordinater. Din opgave er at implementere en konstruktør og en metode til at beregne afstanden til en anden lokation.
- Implementer en konstruktør, der initialiserer alle tre felter:
- Konstruktøren skal tage tre parametre: en
std::stringfor navnet og todouble-værdier for x- og y-koordinaterne. - Inde i konstruktøren skal parameteren for navnet tildeles objektets
name-felt. - Parameteren for x-koordinaten skal tildeles objektets
x-felt. - Parameteren for y-koordinaten skal tildeles objektets
y-felt.
- Konstruktøren skal tage tre parametre: en
- Implementer en metode
distanceTo, der tager et andetLocation-objekt som parameter:- Tilgå
x- ogy-koordinaterne for både det aktuelle objekt og det andet objekt. - Beregn forskellen i
x-koordinaterne:other.x - x. - Beregn forskellen i
y-koordinaterne:other.y - y. - Udregn afstanden ved hjælp af formlen:
sqrt(dx * dx + dy * dy). - Returnér den beregnede afstand som en
double.
- Tilgå
Eksempel
Location("Home", 0.0, 0.0) og Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) og Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) og Location("Library", 2.0, 3.0) -> 5.0
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 3.13
Udfordring: Konstruktør og Attributter
Stryg for at vise menuen
En af de primære anvendelser af konstruktører er at initialisere attributter for klassen. En standardkonstruktør kan for eksempel bruges til at sætte startværdier. For eksempel:
main.cpp
1234567891011121314#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }
Hvis du ikke angiver en værdi for name-attributten for objektet, vil den blive sat til underfined som standard. Du kan prøve at fjerne denne konstruktør for at se, hvilke ændringer der opstår.
Initialisering af attributter med konstruktør
Ligesom funktioner kan konstruktører tage parametre, hvilket muliggør forskellige argumenter under oprettelsen af objekter. Du kan også overbelaste dem for at håndtere varierende antal argumenter.
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
Forestil dig, at du bygger et simpelt kortlægningssystem. Du skal oprette en Location-klasse, der repræsenterer et punkt på et kort med et navn og koordinater. Din opgave er at implementere en konstruktør og en metode til at beregne afstanden til en anden lokation.
- Implementer en konstruktør, der initialiserer alle tre felter:
- Konstruktøren skal tage tre parametre: en
std::stringfor navnet og todouble-værdier for x- og y-koordinaterne. - Inde i konstruktøren skal parameteren for navnet tildeles objektets
name-felt. - Parameteren for x-koordinaten skal tildeles objektets
x-felt. - Parameteren for y-koordinaten skal tildeles objektets
y-felt.
- Konstruktøren skal tage tre parametre: en
- Implementer en metode
distanceTo, der tager et andetLocation-objekt som parameter:- Tilgå
x- ogy-koordinaterne for både det aktuelle objekt og det andet objekt. - Beregn forskellen i
x-koordinaterne:other.x - x. - Beregn forskellen i
y-koordinaterne:other.y - y. - Udregn afstanden ved hjælp af formlen:
sqrt(dx * dx + dy * dy). - Returnér den beregnede afstand som en
double.
- Tilgå
Eksempel
Location("Home", 0.0, 0.0) og Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) og Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) og Location("Library", 2.0, 3.0) -> 5.0
Løsning
Tak for dine kommentarer!
single