Mis on klass?
C ++ klass ühendab andmed ja meetodid andmetega manipuleerimiseks üheks. Klassid määravad ka objektide vormid. Klassis olevaid andmeid ja meetodeid nimetatakse klassi liikmeteks. Klass on kasutaja määratud andmetüüp. Klassiliikmetele juurdepääsemiseks kasutame klassi eksemplari. Klass on objekti eskiis.
Klass on maja prototüüp. See näitab uste, akende, põrandate jms asukohta ja suurusi. Nende kirjelduste põhjal saame maja ehitada. Maja saab objektiks. Prototüübist on võimalik luua palju maju. Samuti on klassist võimalik luua palju objekte.
Ülaltoodud joonisel on meil üks maja prototüüp. Sellest prototüübist oleme loonud kaks erineva funktsiooniga maja.
Selles õpetuses saate teada:
- Mis on klass?
- Klassi näide
- Era- ja avalikud märksõnad
- Objekti määratlus
- Juurdepääs andmeliikmetele
- Klassiliikme funktsioonid
- Konstruktorid ja purustajad
Klassi deklaratsioon
C + keeles määratletakse klass klassi märksõna abil. Sellele peaks järgnema klassi nimi. Seejärel lisatakse klassi keha lokkis trakside vahele {}.
Süntaks:
class class-name{// data// functions};
- Klassinimi on klassile omistatav nimi.
- Andmed on klassi andmed, tavaliselt deklareeritakse muutujatena.
- Funktsioonid on klassi funktsioonid.
Era- ja avalikud märksõnad
Nende kahe märksõnaga peate olema kokku puutunud. Need on juurdepääsu modifikaatorid.
- Privaatne:
Kui funktsiooni või klassi määratlemiseks kasutatakse privaatset märksõna, muutub see privaatseks. Sellistele pääseb ligi ainult klassi seest.
- Avalik:
Avalik märksõna seevastu muudab andmed / funktsioonid avalikuks. Neile pääseb väljastpoolt klassi.
Objekti määratlus
Objektid luuakse klassidest. Klassiobjektid deklareeritakse sarnaselt muutujate deklareerimisega. Klassinimi peab algama, millele järgneb objekti nimi. Klassitüübi objekt.
Süntaks:
class-name object-name;
- Klassinimi on selle klassi nimi, millest objekt luuakse.
- Objekti nimi on uuele objektile omistatav nimi.
Seda klassist objekti loomise protsessi nimetatakse instantiseerimiseks.
Juurdepääs andmeliikmetele
Klassi avalikele liikmetele juurdepääsemiseks kasutame (.) Dot-operaatorit. Need on liikmed, kes on märgitud avaliku juurdepääsu modifikaatoriga.
Näide 1:
#includeusing 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;}
Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Kaasake iostreami päisefail meie koodi, et selle funktsioone kasutada.
- Std nimeruumi kaasamine meie koodi, et kasutada selle klasse seda kutsumata.
- Kuulutage välja klass nimega Telefon.
- Avaliku juurdepääsu modifikaatori kasutamine muutujate, mida loome, avalikult juurdepääsetavaks märkimiseks.
- Deklareerige kahekordse andmetüübi muutuvkulud.
- Deklareerige täisarvu muutuja nimega pesad.
- Klassikeha lõpp.
- Funktsiooni main () kutsumine. Programmi loogika tuleks lisada selle kehasse.
- Looge objekt nimega Y6, mille tüüp on Telefon. Seda nimetatakse kohestumiseks.
- Looge objekt nimega Y7, mille tüüp on Telefon. Seda nimetatakse kohestumiseks.
- Juurdepääs klassi Telefon muutujale / liikme maksumusele, kasutades objekti Y6. Väärtuseks on seatud 100,0. Y6 maksumuseks on nüüd seatud 100,0.
- Juurdepääs klassi Telefon muutuja / liikme pesadele, kasutades objekti Y6. Väärtuseks on seatud 2. Y6 pesad on nüüd 2.
- Juurdepääs klassi Telefon muutujale / liikme maksumusele, kasutades objekti Y7. Väärtuseks määratakse 200,0. Y7 maksumuseks on nüüd seatud 200,0.
- Juurdepääs klassi Telefon muutuja / liikme pesadele, kasutades objekti Y7. Väärtuseks on seatud 2. Y7 pesad on nüüd 2.
- Trükkige konsoolile Y6 maksumus muu teksti kõrvale.
- Trükkige konsoolile Y7 maksumus muu teksti kõrvale.
- Trükkige Y6 pesade arv koos muu tekstiga.
- Trükkige Y7 pesade arv koos muu tekstiga.
- Programm peab edukal lõpetamisel tagastama väärtuse.
- Põhifunktsiooni () keha lõpp.
Mis on privaatklass?
Privaatseks märgitud klassi liikmetele pääseb juurde ainult klassis määratletud funktsioonide abil. Ükski objekt või funktsioon, mis on määratletud väljaspool klassi, ei pääse sellistele liikmetele otse juurde. Eraklassi liikmele pääsevad juurde ainult liikme ja sõbra funktsioonid.
Mis on kaitstud klass?
Klassiliikmetele, kes on märgitud kaitstuks, on eelis privaatseks märgitutega võrreldes. Neile pääseb juurde nende definitsiooni klassi kuuluvate funktsioonide järgi. Lisaks sellele pääseb neile juurde tuletatud klassidest.
Näide 2:
#includeusing 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;}
Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Lisage iostreami päisefail meie koodi, et selle funktsioone kasutada.
- Kaasake standardnimeruum meie koodi, et kasutada selle klasse ilma seda kutsumata.
- Looge klass nimega ClassA.
- Kasutage avaliku juurdepääsu modifikaatorit, et märkida loodav klassi liige avalikult juurdepääsetavaks.
- Looge funktsioon nimega set_a (), mis võtab ühe täisarvu val.
- Looge funktsioon nimega get_a ().
- Kasutage privaatse juurdepääsu modifikaatorit, et märkida loodav klassi liige privaatselt juurdepääsetavaks.
- Deklareerige täisarvu muutuja nimega a.
- Klassikeha lõpp.
- Funktsioonile get_a () pääsemiseks kasutage klassi nime ja ulatuseralduse operaatorit. Tahame määratleda, mida funktsioon kutsub esile.
- Funktsioon get_a () peaks tagastama muutuja a väärtuse.
- Funktsiooni get_a () definitsiooni lõpp.
- Funktsiooni set_a () juurde pääsemiseks kasutage klassi nime ja ulatuse eraldusoperaatorit. Tahame määratleda, mida funktsioon kutsub esile.
- Muutuja val väärtuse omistamine muutujale a.
- Funktsiooni set_a () määratluse lõpp.
- Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
- Looge klass A eksemplar ja andke sellele nimi a.
- Kasutage ülaltoodud klassieksemplari ja funktsiooni set_a (), et määrata muutujale a väärtus 20.
- Mõne teksti printimine konsooli muutuja a väärtuse kõrvale. Muutuja a väärtus saadakse funktsiooni get_a () kutsumisel.
- Eduka lõpetamise korral peab programm tagastama väärtuse.
- Funktsiooni põhiosa lõpp ().
Näide 3:
#includeusing 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;}
Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Lisage iostreami päisefail meie koodi, et selle funktsioone kasutada.
- Kaasake standardnimeruum meie koodi, et kasutada selle klasse ilma seda kutsumata.
- Looge klass nimega ParentClass.
- Kasutage kaitstava juurdepääsu modifikaatorit, et märkida loodav klassiliige kaitstuks.
- Looge täisarvu muutuja nimega väärtus.
- Klassikeha lõpp.
- Looge uus klass nimega ChildClass, mis pärib ParentClassi.
- Kasutage kaitstud juurdepääsumuundurit, et märkida loodav klassiliige lasteklassidele juurdepääsetavaks.
- Looge funktsioon nimega setId (), mis võtab ühe täisarvu x.
- Muutuja x väärtuse omistamine muutuja väärtusele.
- Funktsiooni setId () määratluse lõpp.
- Looge funktsioon nimega displayValue ().
- Printige konsoolile muu teksti kõrvale muutuja nimega väärtus.
- Funktsiooni displayValue () keha lõpp.
- ChildClass-nimelise klassi keha lõpp.
- Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
- Looge ChildClassi eksemplar ja andke sellele nimi c.
- Kasutage muutujale x väärtuse 21 määramiseks ülaltoodud klassieksemplari ja funktsiooni setId ().
- Funktsiooni displayValue () kutsumiseks kasutage ülaltoodud klassieksemplari.
- Eduka lõpetamise korral peab programm tagastama väärtuse.
- Funktsiooni põhiosa lõpp ().
Klassiliikme funktsioonid
Funktsioonid aitavad meil andmetega manipuleerida. Klassiliikme funktsioone saab määratleda kahel viisil:
- Klassi definitsiooni sees
- Väljaspool klassi definitsiooni
Kui funktsioon tuleb määratleda väljaspool klassi definitsiooni, peame kasutama ulatuseralduse operaatorit (: :). Sellele peaksid olema lisatud klassi- ja funktsiooninimed.
Näide 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;}
Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Funktsioonide kasutamiseks lisage iostreami päisefail meie programmi.
- Funktsioonide kasutamiseks kaasake stringi päisefail meie programmi.
- Kaasake standardnimeruum meie koodi, et kasutada selle klasse ilma seda kutsumata.
- Looge klass nimega Guru99.
- Kasutage avaliku juurdepääsu modifikaatorit, et märkida klassiliikmed, keda me loome, avalikult juurdepääsetavateks.
- Looge stringimuutuja nimega juhendaja_nimi.
- Looge täisarvu muutuja nimega id.
- Looge funktsioon nimega printname (). Seda funktsiooni pole klassi definitsioonis määratletud.
- Looge funktsioon nimega print (). See funktsioon on määratletud klassi määratluses. Selle keha on lisatud klassi määratlusse.
- Printige muutuja id väärtus konsooli muu teksti kõrvale. Pange tähele, et see on lisatud printid () funktsiooni kehasse. See käivitatakse ainult funktsiooni printid () kutsumisel.
- Funktsiooni keha printid () lõpp.
- Guru99 klassi keha lõpp.
- Funktsiooni printname () määratluse algus.
- Printige konsoolile muu teksti kõrvale muutuja tutorial_name väärtus. Pange tähele, et see lisati funktsiooni printname () sisusse. See käivitatakse ainult funktsiooni printname () kutsumisel.
- Funktsiooni printname () definitsiooni lõpp.
- Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
- Looge klassi Guru99 eksemplar ja andke talle nimi guru99.
- Kasutage ülaltoodud eksemplari muutujale tutorial_name väärtuse C ++ määramiseks.
- Kasutage muutuja id väärtusele 1001 määramiseks eksemplari guru99.
- Funktsiooni printname () kutsumiseks kasutage eksemplari guru99.
- Uue tühja rea printimiseks konsoolile helistage käsk end (end line).
- Funktsiooni printid () kutsumiseks kasutage eksemplari guru99.
- Eduka lõpetamise korral peab programm tagastama väärtuse.
- Põhifunktsiooni () keha lõpp.
Konstruktorid ja purustajad
Mis on konstruktorid?
Konstruktid on erifunktsioonid, mis lähtestavad objekte. C ++ kompilaatorid kutsuvad objekti loomisel konstruktori. Konstruktorid aitavad klassi liikmetele väärtusi omistada. Loomulikult toimub see pärast seda, kui neile on mäluruumi eraldatud.
Mis on hävitajad?
Destruktorid seevastu aitavad hävitada klassi esemeid.
Konstruktori nimi peab olema sarnane klassi nimega. Ehitajatel ei ole tagasituleku tüüpi.
Konstruktori saab määratleda klassikorpuses või väljaspool seda. Kui see on määratletud väljaspool klassiteksti, tuleks see määratleda koos klassi nime ja ulatuseralduse operaatoriga (: :).
Näide 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Väljund:
Siin on ekraanipilt koodist:
Koodi selgitus:
- Selle funktsioonide kasutamiseks lisage koodi iostream päisefail.
- Kaasake standardnimeruum meie koodi, et kasutada selle klasse ilma seda kutsumata.
- Looge klass nimega ClassA.
- Kasutage avaliku juurdepääsu modifikaatorit, et märkida liige, kelle me loome, avalikult juurdepääsetavaks.
- Looge klassile konstruktor.
- Konstrolile printimiseks tekst, kui konstruktorit kutsutakse. Endl on C ++ märksõna, mis tähendab lõppjoont. See viib hiirekursori järgmisele reale.
- Klassikonstruktori kere ots.
- Looge klassile hävitaja.
- Destruktori kutsumisel konsoolile prinditav tekst. Endl on C ++ märksõna, mis tähendab lõppjoont. See viib hiirekursori järgmisele reale.
- Destruktori kere ots.
- Klassikeha lõpp.
- Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
- Looge klassiobjekt ja andke sellele nimi a. Kutsutakse konstruktor.
- Looge täisarvu muutuja nimega p ja määrake sellele väärtus 1.
- Looge if-lause plokk muutujaga p.
- Looge klassiobjekt ja andke sellele nimi b. Destruktor kutsutakse.
- If-lause sisu lõpp.
- Põhifunktsiooni () keha lõpp.
Kokkuvõte:
- C ++ on objektorienteeritud.
- Klassid moodustavad C ++ põhijooned, mis muudavad selle objektiivseks.
- C ++ klass ühendab andmed ja meetodid andmetega manipuleerimiseks üheks.
- Klass on objekti kavand.
- Klassid määravad objekti kuju.
- Klassis olevaid andmeid ja meetodeid nimetatakse klassi liikmeteks.
- Kursuse liikmetele juurdepääsu saamiseks peaksite kasutama klassi eksemplari.
- Klassi loomiseks kasutame klassi märksõna.
- Klassi liikme funktsioone saab määratleda klassi sees või väljaspool seda.