C ++ klase un objekts ar piemēru

Kas ir klase?

C ++ klase apvieno datus un metodes datu apstrādei vienā. Klases nosaka arī objektu formas. Klasē ietvertie dati un metodes ir pazīstami kā klases dalībnieki. Klase ir lietotāja definēts datu tips. Lai piekļūtu klases dalībniekiem, mēs izmantojam klases eksemplāru. Jūs varat redzēt klasi kā objekta plānu.

Klase ir mājas prototips. Tas parāda durvju, logu, grīdu uc atrašanās vietu un izmērus. No šiem aprakstiem mēs varam uzbūvēt māju. Māja kļūst par objektu. No prototipa ir iespējams izveidot daudzas mājas. Turklāt no klases ir iespējams izveidot daudzus objektus.

Iepriekš redzamajā attēlā mums ir vienas mājas prototips. No šī prototipa mēs esam izveidojuši divas mājas ar dažādām īpašībām.

Šajā apmācībā jūs uzzināsit:

Klases deklarācija

C+klasē klase tiek definēta, izmantojot klases atslēgvārdu. Pēc tam jānorāda klases nosaukums. Klases pamatteksts tiek pievienots starp cirtainām breketēm {}.

Sintakse:

 class class-name { // data // functions }; 
  • Klases nosaukums ir nosaukums, ko piešķirt klasei.
  • Dati ir klases dati, kurus parasti deklarē kā mainīgos.
  • Funkcijas ir klases funkcijas.

Privāti un publiski atslēgvārdi

Jūs noteikti esat saskāries ar šiem diviem atslēgvārdiem. Tie ir piekļuves modifikatori.

  • Privāts:

Ja privātais atslēgvārds tiek izmantots, lai definētu funkciju vai klasi, tas kļūst privāts. Tādi ir pieejami tikai no klases.

  • Publiski:

Savukārt publiskais atslēgvārds padara datus/funkcijas publiskas. Tie ir pieejami ārpus klases.

Objekta definīcija

Objekti tiek veidoti no klasēm. Klases objekti tiek deklarēti līdzīgi kā mainīgie. Sākas klases nosaukums, kam seko objekta nosaukums. Klases tipa objekts.

Sintakse:

 class-name object-name; 
  • Klases nosaukums ir tās klases nosaukums, no kuras jāizveido objekts.
  • Objekta nosaukums ir nosaukums, kas jāpiešķir jaunajam objektam.

Šis objekta izveides process no klases ir pazīstams kā instantiation.

Piekļuve datu dalībniekiem

Lai piekļūtu klases publiskajiem dalībniekiem, mēs izmantojam (.) Punktu operatoru. Tie ir dalībnieki, kas atzīmēti ar publiskās piekļuves pārveidotāju.

1. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Standarta nosaukumvietas iekļaušana mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  3. Pasludiniet klasi ar nosaukumu Tālrunis.
  4. Izmantojot publiskās piekļuves modifikatoru, lai atzīmētu mainīgos, kurus mēs gatavojamies izveidot, kā publiski pieejamus.
  5. Deklarējiet datu veida mainīgās izmaksas.
  6. Deklarējiet veselu skaitļu mainīgo ar nosaukumu slots.
  7. Klases pamatteksta beigas.
  8. Izsaucot galveno () funkciju. Programmas loģika ir jāpievieno tās pamattekstam.
  9. Izveidojiet objektu ar nosaukumu Y6, kura tips ir Tālrunis. To sauc par eksponēšanu.
  10. Izveidojiet objektu ar nosaukumu Y7, kura tips ir Tālrunis. To sauc par eksponēšanu.
  11. Piekļūstiet klases tālruņa mainīgajām/dalībnieku izmaksām, izmantojot objektu Y6. Vērtība ir iestatīta uz 100,0. Y6 izmaksas tagad ir iestatītas uz 100,0.
  12. Piekļūstiet klases Phone mainīgajām/dalībnieku vietām, izmantojot objektu Y6. Vērtība ir iestatīta uz 2. Y6 sloti tagad ir iestatīti uz 2.
  13. Piekļūstiet klases tālruņa mainīgajām/dalībnieku izmaksām, izmantojot objektu Y7. Vērtība ir iestatīta uz 200,0. Y7 izmaksas tagad ir iestatītas uz 200,0.
  14. Piekļūstiet klases Phone mainīgajām/dalībnieku vietām, izmantojot objektu Y7. Vērtība ir iestatīta uz 2. Sloti Y7 tagad ir iestatīti uz 2.
  15. Izdrukājiet Y6 izmaksas konsolē kopā ar citu tekstu.
  16. Izdrukājiet Y7 izmaksas konsolē kopā ar citu tekstu.
  17. Izdrukājiet Y6 slotu skaitu kopā ar citu tekstu.
  18. Izdrukājiet Y7 slotu skaitu kopā ar citu tekstu.
  19. Programmai pēc veiksmīgas pabeigšanas ir jāatgriež vērtība.
  20. Galvenās () funkcijas pamatteksta beigas.

Kas ir privātā klase?

Klases dalībniekiem, kas atzīmēti kā privāti, var piekļūt tikai ar klasē definētajām funkcijām. Neviens objekts vai funkcija, kas definēta ārpus klases, nevar tieši piekļūt šādiem dalībniekiem. Privātās klases dalībniekam var piekļūt tikai dalībnieku un draugu funkcijas.

Kas ir aizsargātā klase?

Klases dalībniekiem, kas atzīmēti kā aizsargāti, ir priekšrocības salīdzinājumā ar tiem, kas atzīmēti kā privāti. Tiem var piekļūt, izmantojot funkcijas to definīcijas klasē. Turklāt tiem var piekļūt no atvasinātām klasēm.

2. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet standarta kodu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  3. Izveidojiet klasi ar nosaukumu ClassA.
  4. Izmantojiet publiskās piekļuves pārveidotāju, lai atzīmētu izveidojamo klases dalībnieku kā publiski pieejamu.
  5. Izveidojiet funkciju ar nosaukumu set_a (), kurai ir viena vesela skaitļa vērtība val.
  6. Izveidojiet funkciju ar nosaukumu get_a ().
  7. Izmantojiet privāto piekļuves pārveidotāju, lai atzīmētu izveidojamo klases dalībnieku kā privāti pieejamu.
  8. Deklarējiet veselu skaitļu mainīgo ar nosaukumu a.
  9. Klases pamatteksta beigas.
  10. Izmantojiet klases nosaukumu un tvēruma izšķirtspējas operatoru, lai piekļūtu funkcijai get_a (). Mēs vēlamies definēt, ko funkcija dara, kad tā tiek izsaukta.
  11. Funkcijai get_a () jāatgriež mainīgā a vērtība, kad tas tiek izsaukts.
  12. Funkcijas get_a () definīcijas beigas.
  13. Izmantojiet klases nosaukumu un tvēruma izšķirtspējas operatoru, lai piekļūtu funkcijai set_a (). Mēs vēlamies definēt, ko funkcija dara, kad tā tiek izsaukta.
  14. Mainīgā val vērtības piešķiršana mainīgajam a.
  15. Funkcijas set_a () definīcijas beigas.
  16. Izsauciet galveno () funkciju. Programmas loģika jāpievieno šīs funkcijas pamattekstā.
  17. Izveidojiet klases A instanci un piešķiriet tai nosaukumu a.
  18. Izmantojiet iepriekš minēto klases instanci un funkciju set_a (), lai mainīgajam a piešķirtu vērtību 20.
  19. Dažas teksta drukāšana kopā ar mainīgā a vērtību konsolē. Mainīgā a vērtību iegūst, izsaucot funkciju get_a ().
  20. Pēc veiksmīgas pabeigšanas programmai ir jāatgriež vērtība.
  21. Funkcijas pamatteksta beigas ().

3. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet standarta kodu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  3. Izveidojiet klasi ar nosaukumu ParentClass.
  4. Izmantojiet aizsargātās piekļuves pārveidotāju, lai atzīmētu izveidojamo klases dalībnieku kā aizsargātu.
  5. Izveidojiet veselu skaitļu mainīgo ar nosaukumu vērtība.
  6. Klases pamatteksta beigas.
  7. Izveidojiet jaunu klasi ar nosaukumu ChildClass, kas pārmanto ParentClass.
  8. Izmantojiet aizsargāto piekļuves pārveidotāju, lai atzīmētu izveidojamo klases dalībnieku kā pieejamu bērnu klasēm.
  9. Izveidojiet funkciju ar nosaukumu setId (), kas ņem vienu veselu skaitli x.
  10. Mainīgā x vērtības piešķiršana mainīgā vērtībai.
  11. Funkcijas setId () definīcijas beigas.
  12. Izveidojiet funkciju ar nosaukumu displayValue ().
  13. Izdrukājiet mainīgā nosaukto vērtību konsolei kopā ar citu tekstu.
  14. Funkcijas displayValue () pamatteksta beigas.
  15. Klases pamatteksta nosaukums ChildClass.
  16. Izsauciet galveno () funkciju. Programmas loģika jāpievieno šīs funkcijas pamattekstā.
  17. Izveidojiet ChildClass instanci un piešķiriet tai nosaukumu c.
  18. Izmantojiet iepriekš minēto klases instanci un funkciju setId (), lai mainīgajam x piešķirtu vērtību 21.
  19. Izmantojiet iepriekš minēto klases instanci, lai izsauktu funkciju displayValue ().
  20. Pēc veiksmīgas pabeigšanas programmai ir jāatgriež vērtība.
  21. Funkcijas pamatteksta beigas ().

Klases dalībnieku funkcijas

Funkcijas palīdz mums manipulēt ar datiem. Klases dalībnieka funkcijas var definēt divos veidos:

  • Klases definīcijas iekšpusē
  • Ārpus klases definīcijas

Ja funkcija ir jādefinē ārpus klases definīcijas, mums jāizmanto tvēruma izšķirtspējas operators (: :). Tam jāpievieno klases un funkciju nosaukumi.

2. piemērs:

 #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 on2vhf; on2vhf.tutorial_name = 'C++'; on2vhf.id = 1001; on2vhf.printname(); cout << endl; on2vhf.printid(); return 0; } 

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu programmā, lai izmantotu tās funkcijas.
  2. Iekļaujiet virknes galvenes failu mūsu programmā, lai izmantotu tās funkcijas.
  3. Iekļaujiet standarta kodu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  4. Izveidojiet klasi ar nosaukumu Guru99.
  5. Izmantojiet publiskās piekļuves pārveidotāju, lai atzīmētu klases dalībniekus, kurus mēs gatavojamies izveidot, kā publiski pieejamus.
  6. Izveidojiet virknes mainīgo ar nosaukumu tutorial_name.
  7. Izveidojiet veselu skaitļu mainīgo ar nosaukumu id.
  8. Izveidojiet funkciju ar nosaukumu printname (). Šī funkcija nav definēta klases definīcijā.
  9. Izveidojiet funkciju ar nosaukumu print (). Šī funkcija ir definēta klases definīcijā. Tās korpuss ir pievienots klases definīcijai.
  10. Izdrukājiet mainīgā ID vērtību kopā ar citu konsolē esošo tekstu. Ņemiet vērā, ka tas ir pievienots funkcijas printid () pamattekstā. Tas tiks izpildīts tikai tad, kad tiks izsaukta funkcija printid ().
  11. Funkcijas printid () pamatteksta beigas.
  12. Guru99 ķermeņa pamatdaļa.
  13. Funkcijas printname () definīcijas sākums.
  14. Izdrukājiet mainīgā tutorial_name vērtību konsolē kopā ar citu tekstu. Ņemiet vērā, ka tas ir pievienots funkcijas printname () pamattekstā. Tas tiks izpildīts tikai tad, kad tiks izsaukta funkcija printname ().
  15. Funkcijas printname () definīcijas beigas.
  16. Izsauciet galveno () funkciju. Programmas loģika jāpievieno šīs funkcijas pamattekstā.
  17. Izveidojiet Guru99 klases eksemplāru un piešķiriet tam nosaukumu on2vhf.
  18. Izmantojiet iepriekš minēto gadījumu, lai mainīgajam tutorial_name piešķirtu vērtību C ++.
  19. Izmantojiet on2vhf instanci, lai mainīgajam id piešķirtu vērtību 1001.
  20. Izmantojiet instanci on2vhf, lai izsauktu funkciju printname ().
  21. Zvaniet beigu (beigu rindas) komandai, lai konsolē izdrukātu jaunu tukšu rindu.
  22. Izmantojiet instanci on2vhf, lai izsauktu funkciju printid ().
  23. Pēc veiksmīgas pabeigšanas programmai ir jāatgriež vērtība.
  24. Galvenās () funkcijas pamatteksta beigas.

Konstruktori un iznīcinātāji

Kas ir konstruktori?

Konstrukcijas ir īpašas funkcijas, kas inicializē objektus. C ++ kompilatori, veidojot objektu, izsauc konstruktoru. Konstruktori palīdz klasēm piešķirt vērtības. Protams, tas notiek pēc tam, kad viņiem ir piešķirta vieta atmiņā.

Kas ir iznīcinātāji?

No otras puses, iznīcinātāji palīdz iznīcināt klases objektus.

Konstruktora nosaukumam jābūt līdzīgam klases nosaukumam. Konstruktoriem nav atgriešanās veida.

Konstruktoru var definēt klases korpusā vai ārpus tā. Ja definēts ārpus klases pamatteksta, tas jādefinē ar klases nosaukumu un tvēruma izšķirtspējas operatoru (: :).

3. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet standarta kodu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  3. Izveidojiet klasi ar nosaukumu ClassA.
  4. Izmantojiet publiskās piekļuves pārveidotāju, lai atzīmētu dalībnieku, kuru mēs gatavojamies izveidot, kā publiski pieejamu.
  5. Izveidojiet klases konstruktoru.
  6. Teksts, kas jādrukā uz konsoles, kad tiek izsaukts konstruktors. Endl ir C ++ atslēgvārds, kas nozīmē beigu rindu. Tas pārvieto peles kursoru uz nākamo rindu.
  7. Klases konstruktora korpusa beigas.
  8. Izveidojiet klases iznīcinātāju.
  9. Teksts, kas jādrukā konsolē, kad tiek saukts iznīcinātājs. Endl ir C ++ atslēgvārds, kas nozīmē beigu rindu. Tas pārvieto peles kursoru uz nākamo rindu.
  10. Iznīcinātāja ķermeņa beigas.
  11. Klases pamatteksta beigas.
  12. Izsauciet galveno () funkciju. Programmas loģika jāpievieno šīs funkcijas pamattekstā.
  13. Izveidojiet klases objektu un piešķiriet tam nosaukumu a. Tiks izsaukts konstruktors.
  14. Izveidojiet veselu skaitļu mainīgo ar nosaukumu p un piešķiriet tam vērtību 1.
  15. Izveidojiet paziņojuma bloku, izmantojot mainīgo p.
  16. Izveidojiet klases objektu un piešķiriet tam nosaukumu b. Tiks izsaukts iznīcinātājs.
  17. Ja paziņojuma pamatteksts.
  18. Galvenās () funkcijas pamatteksta beigas.

Kopsavilkums:

  • C ++ ir orientēts uz objektu.
  • Klases veido C ++ galvenās iezīmes, kas padara to orientētu uz objektu.
  • C ++ klase apvieno datus un metodes datu apstrādei vienā.
  • Klase ir objekta plāns.
  • Klases nosaka objekta formu.
  • Klasē ietvertie dati un metodes ir pazīstami kā klases dalībnieki.
  • Lai piekļūtu klases dalībniekiem, jums jāizmanto klases eksemplārs.
  • Lai izveidotu klasi, mēs izmantojam klases atslēgvārdu.
  • Klases dalībnieka funkcijas var definēt klasē vai ārpus tās.