Razred v C++ je gradnik, ki vodi v objektno orientirano programiranje. Je uporabniško definiran podatkovni tip, ki vsebuje lastne podatkovne člane in članske funkcije, do katerih je mogoče dostopati in jih uporabljati z ustvarjanjem primerka tega razreda. Razred C++ je kot načrt za predmet. Na primer: Razmislite o razredu Avtomobili . Morda obstaja veliko avtomobilov z različnimi imeni in znamkami, vendar bodo vsi imeli nekaj skupnih lastnosti, kot jih bodo imeli vsi 4 kolesa , Omejitev hitrosti , razpon prevoženih kilometrov, itd. Tukaj je torej avto razred, kolesa, omejitve hitrosti in kilometrina pa njihove lastnosti.
- Razred je uporabniško definiran podatkovni tip, ki ima podatkovne člane in članske funkcije.
- Podatkovni člani so podatkovne spremenljivke in članske funkcije so funkcije, ki se uporabljajo za skupno upravljanje teh spremenljivk. Ti podatkovni člani in članske funkcije definirajo lastnosti in obnašanje objektov v razredu.
- V zgornjem primeru razreda avto , bo podatkovni član Omejitev hitrosti , kilometrina, itd. in članske funkcije so lahko uporabo zavor , povečanje hitrosti, itd.
An Objekt je primerek razreda. Ko je razred definiran, se pomnilnik ne dodeli, ko pa je instanciran (tj. ustvarjen objekt), se pomnilnik dodeli.
Definiranje razreda in deklariranje objektov
Razred je definiran v C++ s ključno besedo class, ki ji sledi ime razreda. Telo razreda je definirano znotraj zavitih oklepajev in zaključeno s podpičjem na koncu.
Deklariranje predmetov
Ko je razred definiran, je definirana samo specifikacija za objekt; pomnilnik ali prostor za shranjevanje ni dodeljen. Za uporabo podatkov in funkcij dostopa, definiranih v razredu, morate ustvariti objekte.
Sintaksa
ClassName ObjectName;>
Dostop do podatkovnih članov in članskih funkcij : Do podatkovnih članov in funkcij članov razreda je mogoče dostopati z uporabo operatorja pika (‘.’) z objektom. Na primer, če je ime predmeta obj in želite dostopati do članske funkcije z imenom printName() potem boš moral pisati obj.printName() .
Dostop do podatkovnih članov
Do javnih podatkovnih članov se prav tako dostopa na enak način, vendar do zasebnih podatkovnih članov objekt ne sme neposredno dostopati. Dostop do podatkovnega člana je odvisen izključno od nadzora dostopa tega podatkovnega člana. Ta nadzor dostopa zagotavljajo modifikatorji dostopa v C++. Obstajajo trije modifikatorji dostopa: javno, zasebno in zaščiteno .
C++
kako natisniti java
// C++ program to demonstrate accessing of data members> #include> using> namespace> std;> class> Geeks {> >// Access specifier> public>:> >// Data Members> >string geekname;> >// Member Functions()> >void> printname() { cout <<>'Geekname is:'> << geekname; }> };> int> main()> {> >// Declare an object of class geeks> >Geeks obj1;> >// accessing data member> >obj1.geekname =>'Abhi'>;> >// accessing member function> >obj1.printname();> >return> 0;> }> |
>
>Izhod
Geekname is:Abhi>
Funkcije članov v razredih
Funkcijo člana lahko definirate na dva načina:
- Znotraj definicije razreda
- Zunaj definicije razreda
Za definiranje funkcije članice zunaj definicije razreda moramo uporabiti ločljivost obsega:: operater skupaj z imenom razreda in imenom funkcije.
C++
// C++ program to demonstrate function> // declaration outside class> > #include> using> namespace> std;> class> Geeks> {> >public>:> >string geekname;> >int> id;> > >// printname is not defined inside class definition> >void> printname();> > >// printid is defined inside class definition> >void> printid()> >{> >cout <<>'Geek id is: '>< } }; // Definition of printname using scope resolution operator :: void Geeks::printname() { cout <<'Geekname is: '< } int main() { Geeks obj1; obj1.geekname = 'xyz'; obj1.id=15; // call printname() obj1.printname(); cout << endl; // call printid() obj1.printid(); return 0; }> |
>
>Izhod
Geekname is: xyz Geek id is: 15>
Upoštevajte, da so vse članske funkcije, definirane znotraj definicije razreda, privzete v vrsti , vendar lahko katero koli funkcijo, ki ni razred, naredite inline tako, da z njimi uporabite ključno besedo inline. Funkcije v vrstici so dejanske funkcije, ki se kopirajo povsod med prevajanjem, kot je predprocesorski makro, tako da se obremenitev funkcijskih klicev zmanjša.
java niz podniz
Opomba: Razglasitev a funkcijo prijatelja je način za podelitev zasebnega dostopa funkciji, ki ni član.
Konstruktorji
Konstruktorji so posebni člani razreda, ki jih pokliče prevajalnik vsakič, ko je instanciran objekt tega razreda. Konstruktorji imajo isto ime kot razred in so lahko definirani znotraj ali zunaj definicije razreda. Obstajajo 3 vrste konstruktorjev:
- Privzeti konstruktorji
- Parametrizirani konstruktorji
- Konstruktorji kopiranja
C++
// C++ program to demonstrate constructors> #include> using> namespace> std;> class> Geeks> {> >public>:> >int> id;> > >//Default Constructor> >Geeks()> >{> >cout <<>'Default Constructor called'> << endl;> >id=-1;> >}> > >//Parameterized Constructor> >Geeks(>int> x)> >{> >cout <<>'Parameterized Constructor called '><< endl;> >id=x;> >}> };> int> main() {> > >// obj1 will call Default Constructor> >Geeks obj1;> >cout <<>'Geek id is: '>< // obj2 will call Parameterized Constructor Geeks obj2(21); cout <<'Geek id is: ' < return 0; }> |
>
>Izhod
Default Constructor called Geek id is: -1 Parameterized Constructor called Geek id is: 21>
A Konstruktor Kopiraj ustvari nov objekt, ki je natančna kopija obstoječega objekta. Prevajalnik nudi privzeti konstruktor kopiranja vsem razredom.
Sintaksa:
class-name (class-name &){}> rušilci
Uničevalec je še ena posebna funkcija člana, ki jo pokliče prevajalnik, ko se obseg objekta konča.
C++
razvrščanje tulp python
// C++ program to explain destructors> #include> using> namespace> std;> class> Geeks> {> >public>:> >int> id;> > >//Definition for Destructor> >~Geeks()> >{> >cout <<>'Destructor called for id: '> << id < } }; int main() { Geeks obj1; obj1.id=7; int i = 0; while ( i <5 ) { Geeks obj2; obj2.id=i; i++; } // Scope for obj2 ends here return 0; } // Scope for obj1 ends here> |
>
>Izhod
Destructor called for id: 0 Destructor called for id: 1 Destructor called for id: 2 Destructor called for id: 3 Destructor called for id: 4 Destructor called for id: 7>
Zanimivo dejstvo (redko znani koncept)
Zakaj damo podpičje na koncu razreda?
Marsikdo bi lahko rekel, da je to osnovna sintaksa in bi morali dati podpičje na koncu razreda, kot to določa njegovo pravilo v cpp. Toda glavni razlog, zakaj so podpičja na koncu razreda, je, da prevajalnik preveri, ali uporabnik poskuša ustvariti primerek razreda na koncu razreda.
Da, tako kot strukturo in zvezo, lahko ustvarimo tudi primerek razreda na koncu tik pred podpičjem. Kot rezultat, ko izvajanje doseže to vrstico, ustvari razred in dodeli pomnilnik vašemu primerku.
C++
#include> using> namespace> std;> > class> Demo{> >int> a, b;> >public>:> >Demo()>// default constructor> >{> >cout <<>'Default Constructor'> << endl;> >}> >Demo(>int> a,>int> b):a(a),b(b)>//parameterised constructor> >{> >cout <<>'parameterized constructor -values'> << a <<>' '><< b << endl;> >}> > }instance;> > > int> main() {> > >return> 0;> }> |
ups v javi
>
>Izhod
Default Constructor>
Vidimo lahko, da smo ustvarili primerek razreda Demo z imenom instance, posledično je izhod, ki ga lahko vidimo, poklican Privzeti konstruktor.
Podobno lahko pokličemo tudi parametrizirani konstruktor tako, da sem posredujemo vrednosti
C++
#include> using> namespace> std;> > class> Demo{> >public>:> >int> a, b;> >Demo()> >{> >cout <<>'Default Constructor'> << endl;> >}> >Demo(>int> a,>int> b):a(a),b(b)> >{> >cout <<>'parameterized Constructor values-'> << a <<>' '><< b << endl;> >}> > > > }instance(100,200);> > > int> main() {> > >return> 0;> }> |
višina zamika
>
>Izhod
parameterized Constructor values-100 200>
Če torej ustvarimo primerek tik pred podpičjem, lahko ustvarimo primerek razreda.
Povezani članki:
- Večkratno dedovanje v C++
- Čisti virtualni uničevalec
- C++ kviz