C ++ klasse og objekt med eksempel

Indholdsfortegnelse:

Anonim

Hvad er en klasse?

En C ++ klasse kombinerer data og metoder til at manipulere dataene til en. Klasser bestemmer også objekternes former. Dataene og metoderne i en klasse er kendt som klassemedlemmer. En klasse er en brugerdefineret datatype. For at få adgang til klassemedlemmerne bruger vi en forekomst af klassen. Du kan se en klasse som en plan for et objekt.

En klasse er en prototype for et hus. Det viser placeringen og størrelsen af ​​døre, vinduer, gulve osv. Fra disse beskrivelser kan vi konstruere et hus. Huset bliver objektet. Det er muligt at oprette mange huse ud fra prototypen. Det er også muligt at oprette mange objekter fra en klasse.

I ovenstående figur har vi en enkelt husprototype. Fra denne prototype har vi skabt to huse med forskellige funktioner.

I denne vejledning lærer du:

  • Hvad er en klasse?
  • Klasseeksempel
  • Private og offentlige søgeord
  • Objektdefinition
  • Adgang til datamedlemmer
  • Klassemedlemsfunktioner
  • Konstruktører og ødelæggere

Klassedeklaration

I C + defineres en klasse ved hjælp af klassens nøgleord. Dette skal efterfølges af klassens navn. Klassens krop tilføjes derefter mellem krøllede seler {}.

Syntaks:

class class-name{// data// functions};
  • Klassenavnet er det navn, der skal tildeles klassen.
  • Dataene er data for klassen, normalt erklæret som variabler.
  • Funktionerne er klassefunktionerne.

Private og offentlige søgeord

Du skal have stødt på disse to nøgleord. De er adgangsmodifikatorer.

  • Privat:

Når det private nøgleord bruges til at definere en funktion eller klasse, bliver det privat. Sådanne er kun tilgængelige inden for klassen.

  • Offentlig:

Det offentlige nøgleord gør derimod data / funktioner offentlige. Disse er tilgængelige uden for klassen.

Objektdefinition

Objekter oprettes ud fra klasser. Klasseobjekter erklæres på samme måde som variabler erklæres. Klassens navn skal starte efterfulgt af objektnavnet. Objektet af klassetypen.

Syntaks:

class-name object-name;
  • Klassenavnet er navnet på den klasse, hvorfra et objekt skal oprettes.
  • Objektnavnet er det navn, der skal tildeles det nye objekt.

Denne proces med at skabe et objekt fra en klasse kaldes instantiering.

Adgang til datamedlemmer

For at få adgang til offentlige medlemmer af en klasse bruger vi (.) Dot-operatoren. Disse er medlemmer markeret med offentlig adgangsmodifikator.

Eksempel 1:

#include using namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode for at kunne bruge dens funktioner.
  2. Inkluderet std navneområdet i vores kode for at bruge sine klasser uden at kalde det.
  3. Erklære en klasse ved navn Telefon.
  4. Brug af den offentlige adgangsmodifikator til at markere de variabler, vi er ved at oprette som offentligt tilgængelige.
  5. Angiv de variable omkostninger for en dobbelt datatype.
  6. Erklær en heltalsvariabel med navnet slots.
  7. Afslutningen på klassens krop.
  8. Ringer til hovedfunktionen (). Programmets logik skal tilføjes i dets krop.
  9. Opret et objekt med navnet Y6 af typen Telefon. Dette kaldes instantiering.
  10. Opret et objekt med navnet Y7 af typen Telefon. Dette kaldes instantiering.
  11. Få adgang til variablen / medlemsomkostningerne for klasse Telefon ved hjælp af objektet Y6. Værdien er sat til 100,0. Omkostningerne ved Y6 er nu indstillet til 100,0.
  12. Få adgang til variablen / medlemsåbningerne i klasse Telefon ved hjælp af objektet Y6. Værdien er sat til 2. Pladserne til Y6 er nu indstillet til 2.
  13. Få adgang til variablen / medlemsomkostningerne for klasse Telefon ved hjælp af objektet Y7. Værdien er indstillet til 200,0. Prisen for Y7 er nu indstillet til 200,0.
  14. Få adgang til variablen / medlemsåbningerne i klasse Telefon ved hjælp af objektet Y7. Værdien er indstillet til 2. Pladserne til Y7 er nu indstillet til 2.
  15. Udskriv prisen på Y6 på konsollen sammen med anden tekst.
  16. Udskriv prisen på Y7 på konsollen sammen med anden tekst.
  17. Udskriv antallet af slots til Y6 sammen med anden tekst.
  18. Udskriv antallet af slots til Y7 sammen med anden tekst.
  19. Programmet skal returnere en værdi, når den er gennemført.
  20. Slutningen af ​​hovedfunktionen ().

Hvad er en privat klasse?

Klassemedlemmer markeret som private har kun adgang til funktioner defineret i klassen. Ethvert objekt eller funktion defineret uden for klassen kan ikke få direkte adgang til sådanne medlemmer. Et privat klassemedlem har kun adgang til medlemmer og venfunktioner.

Hvad er en beskyttet klasse?

Klassemedlemmer markeret som beskyttet har en fordel i forhold til dem, der er markeret som private. De kan tilgås med funktioner inden for klassen af ​​deres definition. Derudover kan de tilgås fra afledte klasser.

Eksempel 2:

#include using namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode for at bruge dens funktioner.
  2. Inkluder std navneområdet i vores kode for at bruge dets klasser uden at kalde det.
  3. Opret en klasse med navnet ClassA.
  4. Brug den offentlige adgangsmodifikator til at markere det klassemedlem, der skal oprettes, som offentligt tilgængeligt.
  5. Opret den funktion, der hedder set_a (), der tager en heltal værdi.
  6. Opret en funktion med navnet get_a ().
  7. Brug den private adgangsmodifikator til at markere det klassemedlem, der skal oprettes, som privat tilgængeligt.
  8. Erklær en heltalsvariabel med navnet a.
  9. Afslutningen på klassens krop.
  10. Brug klassens navn og omfangsopløsningsoperatoren for at få adgang til funktionen get_a (). Vi vil definere, hvad funktionen gør, når den påberåbes.
  11. Funktionen get_a () skal returnere værdien af ​​variablen a, når den påberåbes.
  12. Slutningen af ​​definitionen af ​​funktionen get_a ().
  13. Brug klassens navn og omfangsopløsningsoperatoren til at få adgang til funktionen set_a (). Vi vil definere, hvad funktionen gør, når den påberåbes.
  14. Tildeling af værdien af ​​variablen val til variabel a.
  15. Slutningen af ​​definitionen af ​​funktionen set_a ().
  16. Ring til hovedfunktionen (). Programmets logik skal tilføjes inden for denne funktion.
  17. Opret en forekomst af ClassA, og giv den navnet a.
  18. Brug ovennævnte klasseinstans og funktionen set_a () til at tildele variablen a en værdi på 20.
  19. Udskrivning af tekst sammen med værdien af ​​variabel a på konsollen. Værdien af ​​variabel a opnås ved at kalde funktionen get_a ().
  20. Programmet skal returnere værdi efter vellykket afslutning.
  21. Slutningen af ​​hoveddelen af ​​funktionen ().

Eksempel 3:

#include using namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode for at bruge dens funktioner.
  2. Inkluder std navneområdet i vores kode for at bruge dets klasser uden at kalde det.
  3. Opret en klasse med navnet ParentClass.
  4. Brug den beskyttede adgangsmodifikator til at markere det klassemedlem, der skal oprettes, som beskyttet.
  5. Opret en heltalsvariabel med navnet værdi.
  6. Afslutningen på klassens krop.
  7. Opret en ny klasse ved navn ChildClass, der arver ParentClass.
  8. Brug den beskyttede adgangsmodifikator til at markere det klassemedlem, der skal oprettes, som tilgængeligt for barneklasser.
  9. Opret funktionen med navnet setId (), der tager en heltal x.
  10. Tildele værdien af ​​variablen x til den variable værdi.
  11. Slut på definition af funktionen setId ().
  12. Opret en funktion med navnet displayValue ().
  13. Udskriv værdien af ​​variablen med navnet værdi på konsollen sammen med anden tekst.
  14. Slutningen af ​​funktionen displayValue ().
  15. Slutningen af ​​kroppen i klassen ved navn ChildClass.
  16. Ring til hovedfunktionen (). Programmets logik skal tilføjes inden for denne funktion.
  17. Opret en instans af ChildClass, og giv den navnet c.
  18. Brug ovennævnte klasseinstans og funktionen setId () til at tildele en værdi på 21 til variablen x.
  19. Brug ovennævnte klasseinstans til at kalde funktionen kaldet displayValue ().
  20. Programmet skal returnere værdi efter vellykket afslutning.
  21. Slutningen af ​​hoveddelen af ​​funktionen ().

Klassemedlemsfunktioner

Funktioner hjælper os med at manipulere data. Klassemedlemsfunktioner kan defineres på to måder:

  • Inde i klassedefinitionen
  • Uden for klassedefinitionen

Hvis en funktion skal defineres uden for en klassedefinition, skal vi bruge omfangsopløsningsoperatoren (: :). Dette skal ledsages af klasse- og funktionsnavne.

Eksempel 2:

#include #include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores program for at bruge dens funktioner.
  2. Inkluder strenghovedfilen i vores program for at bruge dens funktioner.
  3. Inkluder std navneområdet i vores kode for at bruge dets klasser uden at kalde det.
  4. Opret en klasse ved navn Guru99.
  5. Brug modifikatoren for offentlig adgang til at markere de klassemedlemmer, vi er ved at oprette, som offentligt tilgængelige.
  6. Opret en strengvariabel med navnet tutorial_name.
  7. Opret en heltalsvariabel med navnet id.
  8. Opret en funktion med navnet printnavn (). Denne funktion er ikke defineret inden for klassedefinitionen.
  9. Opret en funktion med navnet trykt (). Denne funktion er defineret inden for klassedefinitionen. Dens krop er blevet tilføjet inden for klassedefinitionen.
  10. Udskriv værdien af ​​variabel-id sammen med anden tekst på konsollen. Bemærk, dette er blevet tilføjet inden for printid () -funktionen. Det udføres kun, når funktionen printid () kaldes.
  11. Slutningen af ​​funktionselementet printid ().
  12. Slutningen af ​​kroppen i klassen Guru99.
  13. Starten på definitionen af ​​funktionen printnavn ().
  14. Udskriv værdien af ​​variabel tutorial_name på konsollen sammen med anden tekst. Bemærk, at dette er blevet tilføjet inden for selve printname () -funktionen. Det udføres kun, når funktionen printnavn () kaldes.
  15. Slutningen af ​​definitionen af ​​funktionen printname ().
  16. Ring til hovedfunktionen (). Programmets logik skal tilføjes inden for denne funktion.
  17. Opret en forekomst af klasse Guru99, og giv den navnet guru99.
  18. Brug ovenstående forekomst til at tildele en værdi af C ++ til variablen tutorial_name.
  19. Brug guru99-forekomsten til at tildele en værdi på 1001 til variablen id.
  20. Brug forekomsten guru99 til at kalde funktionen printnavn ().
  21. Ring til slutkommandoen (slutlinie) for at udskrive en ny tom linje på konsollen.
  22. Brug instansen guru99 til at kalde funktionen printid ().
  23. Programmet skal returnere værdi efter vellykket afslutning.
  24. Slutningen af ​​hovedfunktionen ().

Konstruktører og ødelæggere

Hvad er konstruktører?

Konstruktioner er specielle funktioner, der initialiserer objekter. C ++ - kompilatorerne kalder en konstruktør, når de opretter et objekt. Konstruktørerne hjælper med at tildele værdier til klassemedlemmer. Dette er selvfølgelig, efter at de har fået tildelt noget hukommelsesplads.

Hvad er ødelæggere?

Destruktører på den anden side hjælper med at ødelægge klasseobjekter.

Konstruktørnavnet skal svare til klassens navn. Konstruktører har ikke returtype.

Konstruktøren kan defineres inden for eller uden for klassens krop. Hvis det defineres uden for klassekroppen, skal det defineres med klassens navn og operatøren for omfangsopløsning (: :).

Eksempel 3:

#include using namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"<

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream headerfilen i koden for at bruge dens funktioner.
  2. Inkluder std navneområdet i vores kode for at bruge dets klasser uden at kalde det.
  3. Opret en klasse med navnet ClassA.
  4. Brug den offentlige adgangsmodifikator til at markere det medlem, vi er ved at oprette, som offentligt tilgængeligt.
  5. Opret en konstruktør til klassen.
  6. Tekst der skal udskrives på konsollen, når konstruktøren kaldes. Endl er et C ++ nøgleord, hvilket betyder slutlinie. Den flytter musemarkøren til den næste linje.
  7. Slutningen af ​​klassekonstruktørens krop.
  8. Opret en destruktor til klassen.
  9. Tekst, der skal udskrives på konsollen, når destruktoren kaldes. Endl er et C ++ nøgleord, hvilket betyder slutlinie. Den flytter musemarkøren til den næste linje.
  10. Slut på destruktørens legeme.
  11. Afslutningen på klassens krop.
  12. Ring til hovedfunktionen (). Programmets logik skal tilføjes inden for denne funktion.
  13. Opret et klasseobjekt, og giv det navnet a. Konstruktøren kaldes op.
  14. Opret en heltalsvariabel med navnet p, og tildel den en værdi på 1.
  15. Opret en if-sætningsblok ved hjælp af variablen p.
  16. Opret et klasseobjekt, og giv det navnet b. Destruktøren vil blive kaldt.
  17. Slutningen af ​​if-erklæringen.
  18. Slutningen af ​​hovedfunktionens () krop.

Resumé:

  • C ++ er objektorienteret.
  • Klasser udgør hovedfunktionerne i C ++, der gør det objektorienteret.
  • En C ++ klasse kombinerer data og metoder til at manipulere dataene til en.
  • En klasse er en plan for et objekt.
  • Klasser bestemmer formen på et objekt.
  • Dataene og metoderne i en klasse er kendt som klassemedlemmer.
  • For at få adgang til klassemedlemmer skal du bruge en forekomst af klassen.
  • For at oprette en klasse bruger vi klassens nøgleord.
  • Klassemedlemsfunktionerne kan defineres inden for eller uden for en klasse.