Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Konstruktør Initialiseringsliste | Grunnleggende om OOP i C++
Practice
Projects
Quizzes & Challenges
Quizer
Challenges
/
C++ OOP

bookKonstruktør Initialiseringsliste

Sveip for å vise menyen

En initialiseringsliste gjør det mulig for konstruktører å initialisere klassemedlemmer før konstruktørens kropp kjøres. Dette er spesielt nyttig for kompleks initialisering eller når man arbeider med objekter av klasser som har const-medlemmer.

Syntaks for initialiseringsliste

Syntaksen for initialiseringslister kan virke unødvendig kompleks og forvirrende. Man kan vurdere å kun bruke en konstruktør som et enklere alternativ. Etter hvert som programmet vokser, viser initialiseringslister seg likevel å være praktiske og enkle å bruke.

  • : (kolontegn): introduserer medlemsinitialiseringslisten i en konstruktør;

  • medlem (verdi): et klassemedlemsvariabel som initialiseres med verdien (argumentet sendt til konstruktøren);

  • { } (krøllparenteser): kroppen til konstruktøren, hvor ytterligere kode kan kjøres etter medlemsinitialisering.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Begrensninger og hensyn

Det finnes en vanlig misforståelse angående rekkefølgen på initialisering i initialiseringslisten. I motsetning til hva mange tror, følger ikke initialiseringen av variabler i initialiseringslisten rekkefølgen de er skrevet i. I stedet bestemmes rekkefølgen av medlemsdeklarasjonene i klassen, ikke av rekkefølgen i initialiseringslisten.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Merk

Prøv å endre rekkefølgen for initialisering av variabelen total i initialiseringslisten og i variabeldeklarasjonen innenfor class.

Når du bruker initialiseringslister i en konstruktør, kan argumentnavnet være det samme som attributtnavnet til class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Men hvis du bruker samme navn for både medlemsvariablene og argumentene, vil total få verdien av de multipliserte argumentene, ikke medlemmene. For å se dette, prøv å sette quantity til null i stedet for argumentet.

1. Hva er en konstruktør-initialiseringsliste?

2. Hvilket symbol introduserer medlemsinitialiseringslisten i en konstruktør?

question mark

Hva er en konstruktør-initialiseringsliste?

Select the correct answer

question mark

Hvilket symbol introduserer medlemsinitialiseringslisten i en konstruktør?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 11

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

Seksjon 1. Kapittel 11
some-alt