Klasse in C++ is de bouwsteen die leidt tot objectgeoriënteerd programmeren. Het is een door de gebruiker gedefinieerd gegevenstype dat zijn eigen gegevensleden en lidfuncties bevat, die toegankelijk en gebruikt kunnen worden door een exemplaar van die klasse te maken. Een C++-klasse is als een blauwdruk voor een object. Bijvoorbeeld: Beschouw de klasse van Auto's . Er kunnen veel auto's zijn met verschillende namen en merken, maar ze zullen allemaal een aantal gemeenschappelijke eigenschappen delen, zoals ze allemaal zullen hebben 4 wielen , Snelheidslimiet , Kilometerstand, etc. Dus hier is Auto de klasse, en wielen, snelheidslimieten en kilometerstand zijn hun eigenschappen.
- Een klasse is een door de gebruiker gedefinieerd gegevenstype met gegevensleden en lidfuncties.
- Gegevensleden zijn de gegevensvariabelen en lidfuncties zijn de functies die worden gebruikt om deze variabelen samen te manipuleren. Deze gegevensleden en lidfuncties definiëren de eigenschappen en het gedrag van de objecten in een klasse.
- In het bovenstaande voorbeeld van klasse Auto , zal het gegevenslid zijn snelheidslimiet , kilometerstand, etc, en ledenfuncties kunnen zijn remmen toepassen , toenemende snelheid, enz.
Een Voorwerp is een instantie van een klasse. Wanneer een klasse wordt gedefinieerd, wordt er geen geheugen toegewezen, maar wanneer deze wordt geïnstantieerd (dat wil zeggen dat er een object wordt gemaakt) wordt er geheugen toegewezen.
Klasse definiëren en objecten declareren
Een klasse wordt in C++ gedefinieerd met behulp van het trefwoord class gevolgd door de naam van de klasse. De hoofdtekst van de klasse wordt tussen de accolades gedefinieerd en aan het einde afgesloten met een puntkomma.
Objecten declareren
Wanneer een klasse wordt gedefinieerd, wordt alleen de specificatie voor het object gedefinieerd; er is geen geheugen of opslag toegewezen. Om de gegevens- en toegangsfuncties te gebruiken die in de klasse zijn gedefinieerd, moet u objecten maken.
Syntaxis
ClassName ObjectName;>
Toegang tot gegevensleden en lidfuncties : De gegevensleden en lidfuncties van de klasse zijn toegankelijk via de operator punt(‘.’) bij het object. Als de naam van het object bijvoorbeeld obj en je wilt toegang krijgen tot de ledenfunctie met de naam print naam() dan zul je moeten schrijven obj.printName() .
Toegang tot gegevensleden
De leden van de openbare gegevens zijn ook op dezelfde manier toegankelijk, aangezien de leden van de privégegevens echter niet rechtstreeks door het object mogen worden benaderd. Toegang tot een datalid hangt uitsluitend af van de toegangscontrole van dat datalid. Deze toegangscontrole wordt gegeven door Access-modifiers in C++. Er zijn drie toegangsmodificatoren: publiek, privé en beschermd .
C++
hippe taal
// 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;> }> |
>
>Uitvoer
Geekname is:Abhi>
Functies van leden in klassen
Er zijn twee manieren om een lidfunctie te definiëren:
- Binnenklassedefinitie
- Buiten klassedefinitie
Om een lidfunctie buiten de klassendefinitie te definiëren, moeten we de bereikresolutie:: operator samen met de klassenaam en functienaam.
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; }> |
>
database met zuureigenschappen
>Uitvoer
Geekname is: xyz Geek id is: 15>
Houd er rekening mee dat alle lidfuncties die binnen de klassendefinitie zijn gedefinieerd, standaard zijn in lijn , maar u kunt ook elke niet-klassefunctie inline maken door het trefwoord inline ermee te gebruiken. Inline-functies zijn feitelijke functies die tijdens het compileren overal worden gekopieerd, zoals pre-processormacro's, zodat de overhead van functieaanroepen wordt verminderd.
Opmerking: Het verklaren van een vriend functie is een manier om privétoegang te geven aan een niet-ledenfunctie.
Constructeurs
Constructeurs zijn speciale klasseleden die door de compiler worden aangeroepen telkens wanneer een object van die klasse wordt geïnstantieerd. Constructors hebben dezelfde naam als de klasse en kunnen binnen of buiten de klassedefinitie worden gedefinieerd. Er zijn 3 soorten constructeurs:
- Standaardconstructeurs
- Geparametriseerde constructeurs
- Kopieer constructeurs
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; }> |
>
lettergroottes in latex
>Uitvoer
Default Constructor called Geek id is: -1 Parameterized Constructor called Geek id is: 21>
A Kopieer constructeur maakt een nieuw object aan, dat een exacte kopie is van het bestaande object. De compiler biedt een standaard Copy Constructor voor alle klassen.
Syntaxis:
class-name (class-name &){}> vernietigers
Torpedojager is een andere speciale lidfunctie die door de compiler wordt aangeroepen wanneer de reikwijdte van het object eindigt.
C++
// 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> |
>
>Uitvoer
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 feit (zeldzaam bekend concept)
Waarom plaatsen we puntkomma's aan het einde van de les?
Veel mensen zouden kunnen zeggen dat het een basissyntaxis is en dat we aan het einde van de klasse een puntkomma moeten plaatsen, zoals de regel definieert in cpp. Maar de belangrijkste reden waarom er puntkomma's aan het einde van de klasse staan, is dat de compiler controleert of de gebruiker aan het einde ervan een instantie van de klasse probeert te maken.
Ja, net als structuur en unie kunnen we ook de instantie van een klasse aan het einde net vóór de puntkomma maken. Als gevolg hiervan wordt, zodra de uitvoering die regel bereikt, een klasse gemaakt en geheugen aan uw instantie toegewezen.
hoeveel toetsen hebben toetsenborden
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;> }> |
>
>Uitvoer
Default Constructor>
We kunnen zien dat we een klasse-instantie van Demo hebben gemaakt met de naam instance, met als resultaat dat de uitvoer die we kunnen zien de Default Constructor wordt genoemd.
Op dezelfde manier kunnen we ook de geparametriseerde constructor aanroepen door hier waarden door te geven
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;> }> |
java string vervangen
>
>Uitvoer
parameterized Constructor values-100 200>
Dus door een instantie net vóór de puntkomma te maken, kunnen we de instantie van de klasse maken.
Gerelateerde artikelen:
- Meervoudige overerving in C++
- Pure virtuele vernietiger
- C++-quiz