Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Konstruktør og Attributter | Konstruktører og Destruktører
C++ OOP

bookUtfordring: Konstruktør og Attributter

En av hovedbruksområdene for konstruktører er å initialisere attributter til klassen. En standardkonstruktør kan for eksempel brukes til å sette startverdier. For eksempel:

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

Hvis du ikke angir verdi for name-attributtet til objektet, vil det bli satt til underfined som standard. Du kan prøve å fjerne denne konstruktøren for å se hvilke endringer som oppstår.

Initialisering av attributter med konstruktør

Akkurat som funksjoner kan konstruktører ta parametere, noe som tillater ulike argumenter ved opprettelse av objekter. Du kan også overbelaste dem for å håndtere varierende antall argumenter.

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

Swipe to start coding

Tenk deg at du skal bygge et enkelt kartleggingssystem. Du må opprette en Location-klasse som representerer et punkt på et kart med et navn og koordinater. Oppgaven din er å implementere en konstruktør og en metode for å beregne avstanden til en annen lokasjon.

  1. Implementer en konstruktør som initialiserer alle tre feltene:
    • Konstruktøren skal ta tre parametere: en std::string for navnet, og to double-verdier for x- og y-koordinatene.
    • Inne i konstruktøren skal parameteren for navnet tilordnes objektets name-felt.
    • Parameteren for x-koordinaten skal tilordnes objektets x-felt.
    • Parameteren for y-koordinaten skal tilordnes objektets y-felt.
  2. Implementer en metode distanceTo som tar et annet Location-objekt som parameter:
    • Få tilgang til x- og y-koordinatene til både det nåværende objektet og det andre objektet.
    • Beregn forskjellen i x-koordinatene: other.x - x.
    • Beregn forskjellen i y-koordinatene: other.y - y.
    • Beregn avstanden ved å bruke formelen: sqrt(dx * dx + dy * dy).
    • Returner den beregnede avstanden som en double.

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookUtfordring: Konstruktør og Attributter

Sveip for å vise menyen

En av hovedbruksområdene for konstruktører er å initialisere attributter til klassen. En standardkonstruktør kan for eksempel brukes til å sette startverdier. For eksempel:

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

Hvis du ikke angir verdi for name-attributtet til objektet, vil det bli satt til underfined som standard. Du kan prøve å fjerne denne konstruktøren for å se hvilke endringer som oppstår.

Initialisering av attributter med konstruktør

Akkurat som funksjoner kan konstruktører ta parametere, noe som tillater ulike argumenter ved opprettelse av objekter. Du kan også overbelaste dem for å håndtere varierende antall argumenter.

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

Swipe to start coding

Tenk deg at du skal bygge et enkelt kartleggingssystem. Du må opprette en Location-klasse som representerer et punkt på et kart med et navn og koordinater. Oppgaven din er å implementere en konstruktør og en metode for å beregne avstanden til en annen lokasjon.

  1. Implementer en konstruktør som initialiserer alle tre feltene:
    • Konstruktøren skal ta tre parametere: en std::string for navnet, og to double-verdier for x- og y-koordinatene.
    • Inne i konstruktøren skal parameteren for navnet tilordnes objektets name-felt.
    • Parameteren for x-koordinaten skal tilordnes objektets x-felt.
    • Parameteren for y-koordinaten skal tilordnes objektets y-felt.
  2. Implementer en metode distanceTo som tar et annet Location-objekt som parameter:
    • Få tilgang til x- og y-koordinatene til både det nåværende objektet og det andre objektet.
    • Beregn forskjellen i x-koordinatene: other.x - x.
    • Beregn forskjellen i y-koordinatene: other.y - y.
    • Beregn avstanden ved å bruke formelen: sqrt(dx * dx + dy * dy).
    • Returner den beregnede avstanden som en double.

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

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2
single

single

some-alt