Klasse i C++ er byggesteinen som fører til objektorientert programmering. Det er en brukerdefinert datatype, som har sine egne datamedlemmer og medlemsfunksjoner, som kan nås og brukes ved å opprette en forekomst av den klassen. En C++-klasse er som en blåkopi for et objekt. For eksempel: Tenk på klassen til Biler . Det kan være mange biler med forskjellige navn og merker, men alle vil dele noen felles egenskaper som alle vil ha 4 hjul , Fartsgrense , Kilometerstand, osv. Så her er bil klassen, og hjul, fartsgrenser og kjørelengde er deres egenskaper.
- En klasse er en brukerdefinert datatype som har datamedlemmer og medlemsfunksjoner.
- Datamedlemmer er datavariablene og medlemsfunksjoner er funksjonene som brukes til å manipulere disse variablene sammen, disse datamedlemmene og medlemsfunksjonene definerer egenskapene og oppførselen til objektene i en klasse.
- I eksemplet ovenfor av klasse Bil , vil datamedlemmet være fartsgrense , kjørelengde, etc, og medlemsfunksjoner kan være å bruke bremser , økende hastighet, etc.
An Gjenstand er en forekomst av en klasse. Når en klasse er definert, tildeles ikke noe minne, men når det er instansiert (dvs. et objekt opprettes) tildeles minne.
Definere klasse og deklarere objekter
En klasse er definert i C++ ved å bruke nøkkelordet klasse etterfulgt av navnet på klassen. Brødteksten til klassen er definert innenfor de krøllede parentesene og avsluttes med et semikolon på slutten.
Erklære objekter
Når en klasse er definert, er kun spesifikasjonen for objektet definert; ingen minne eller lagring er tildelt. For å bruke data- og tilgangsfunksjonene som er definert i klassen, må du opprette objekter.
Syntaks
ClassName ObjectName;>
Tilgang til datamedlemmer og medlemsfunksjoner : Datamedlemmene og medlemsfunksjonene til klassen kan nås ved å bruke dot(‘.’) operatoren med objektet. For eksempel hvis navnet på objektet er obj og du vil ha tilgang til medlemsfunksjonen med navnet printName() da må du skrive obj.printName() .
Tilgang til datamedlemmer
De offentlige datamedlemmene får også tilgang på samme måte gitt, men de private datamedlemmene har ikke tilgang til direkte av objektet. Tilgang til et datamedlem avhenger utelukkende av tilgangskontrollen til det datamedlemmet. Denne tilgangskontrollen er gitt av Access-modifikatorer i C++. Det er tre tilgangsmodifikatorer: offentlig, privat og beskyttet .
C++
kaste unntakshåndtering i 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;> }> |
>
>Produksjon
Geekname is:Abhi>
Medlemsfunksjoner i klasser
Det er 2 måter å definere en medlemsfunksjon på:
- Inne i klassedefinisjonen
- Utenfor klassedefinisjon
For å definere en medlemsfunksjon utenfor klassedefinisjonen må vi bruke omfangsoppløsning:: operatør sammen med klassenavnet og funksjonsnavnet.
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; }> |
metode overbelastning
>
>Produksjon
Geekname is: xyz Geek id is: 15>
Merk at alle medlemsfunksjonene definert i klassedefinisjonen er som standard på linje , men du kan også gjøre en hvilken som helst ikke-klassefunksjon innebygd ved å bruke nøkkelordet inline med dem. Innebygde funksjoner er faktiske funksjoner, som kopieres overalt under kompilering, som pre-prosessor makro, slik at overhead av funksjonskall reduseres.
Merk: Erklærer en vennefunksjon er en måte å gi privat tilgang til en funksjon som ikke er medlem.
Konstruktører
Konstruktører er spesielle klassemedlemmer som kalles opp av kompilatoren hver gang et objekt av den klassen blir instansiert. Konstruktører har samme navn som klassen og kan være definert innenfor eller utenfor klassedefinisjonen. Det er 3 typer konstruktører:
- Standard konstruktører
- Parameteriserte konstruktører
- Kopier konstruktører
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; }> |
>
>Produksjon
Default Constructor called Geek id is: -1 Parameterized Constructor called Geek id is: 21>
EN Kopier Konstruktør oppretter et nytt objekt, som er en nøyaktig kopi av det eksisterende objektet. Kompilatoren gir en standard kopikonstruktør til alle klassene.
Syntaks:
class-name (class-name &){}> ødeleggere
ødelegger er en annen spesiell medlemsfunksjon som kalles av kompilatoren når omfanget av objektet slutter.
C++
streng i char java
// 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> |
>
>Produksjon
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>
Interessant fakta (sjeldent kjent konsept)
Hvorfor gir vi semikolon på slutten av timen?
Mange vil kanskje si at det er en grunnleggende syntaks, og vi bør gi semikolon på slutten av klassen som regelen definerer i cpp. Men hovedårsaken til at semikolon er der på slutten av klassen er kompilatorsjekker om brukeren prøver å lage en forekomst av klassen på slutten av den.
Ja, akkurat som struktur og forening, kan vi også lage forekomsten av en klasse på slutten like før semikolon. Som et resultat, når kjøringen når den linjen, oppretter den en klasse og tildeler minne til forekomsten din.
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;> }> |
java server sider
>
>Produksjon
Default Constructor>
Vi kan se at vi har opprettet en klasseforekomst av Demo med navnet forekomst, som et resultat kalles utdataene vi kan se er Default Constructor.
På samme måte kan vi også kalle den parameteriserte konstruktøren bare ved å sende verdier her
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;> }> |
np.null
>
>Produksjon
parameterized Constructor values-100 200>
Så ved å lage en forekomst rett før semikolon, kan vi lage forekomsten av klassen.
Relaterte artikler:
- Multippel arv i C++
- Ren virtuell ødelegger
- C++ Quiz