C ++ klasse en object met voorbeeld

Inhoudsopgave:

Anonim

Wat is een klas?

Een C ++ -klasse combineert gegevens en methoden voor het manipuleren van de gegevens tot één. Klassen bepalen ook de vormen van objecten. De gegevens en methoden in een klasse worden klasseleden genoemd. Een klasse is een door de gebruiker gedefinieerd gegevenstype. Om toegang te krijgen tot de klasleden, gebruiken we een instantie van de klas. U kunt een klasse zien als een blauwdruk voor een object.

Een klas is een prototype voor een huis. Het toont de locatie en afmetingen van deuren, ramen, vloeren, enz. Aan de hand van deze beschrijvingen kunnen we een huis bouwen. Het huis wordt het object. Het is mogelijk om van het prototype veel huizen te maken. Het is ook mogelijk om veel objecten uit een klasse te maken.

In de bovenstaande afbeelding hebben we een prototype voor één huis. Van dit prototype hebben we twee huizen gemaakt met verschillende kenmerken.

In deze tutorial leer je:

  • Wat is een klas?
  • Klasse Voorbeeld
  • Persoonlijke en openbare trefwoorden
  • Objectdefinitie
  • Toegang tot gegevensleden
  • Functies van klassenleden
  • Constructeurs en vernietigers

Klasse verklaring

In C + wordt een klasse gedefinieerd met het trefwoord class. Dit moet worden gevolgd door de klassenaam. De hoofdtekst van de klas wordt vervolgens tussen accolades {} toegevoegd.

Syntaxis:

class class-name{// data// functions};
  • De klassenaam is de naam die aan de klas moet worden toegewezen.
  • De gegevens zijn de gegevens voor de klasse, normaal gedeclareerd als variabelen.
  • De functies zijn de klassefuncties.

Persoonlijke en openbare trefwoorden

U moet deze twee sleutelwoorden zijn tegengekomen. Het zijn toegangsmodificatoren.

  • Privaat:

Wanneer het private sleutelwoord wordt gebruikt om een ​​functie of klasse te definiëren, wordt het privé. Deze zijn alleen toegankelijk vanuit de klas.

  • Openbaar:

Het publieke trefwoord maakt daarentegen gegevens / functies openbaar. Deze zijn van buiten de klas toegankelijk.

Objectdefinitie

Objecten worden gemaakt op basis van klassen. Klasseobjecten worden op dezelfde manier gedeclareerd als variabelen worden gedeclareerd. De klassenaam moet beginnen, gevolgd door de objectnaam. Het object van het klassetype.

Syntaxis:

class-name object-name;
  • De klassenaam is de naam van de klasse waaruit een object moet worden gemaakt.
  • De objectnaam is de naam die aan het nieuwe object moet worden toegewezen.

Dit proces waarbij een object uit een klasse wordt gemaakt, wordt instantiatie genoemd.

Toegang tot gegevensleden

Om toegang te krijgen tot openbare leden van een klas, gebruiken we de (.) Puntoperator. Dit zijn leden die zijn gemarkeerd met een modificator voor openbare toegang.

Voorbeeld 1:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. Het opnemen van de std-naamruimte in onze code om zijn klassen te gebruiken zonder het aan te roepen.
  3. Declareer een klas met de naam Phone.
  4. De modificator voor openbare toegang gebruiken om de variabelen die we gaan maken te markeren als openbaar toegankelijk.
  5. Declareer de variabele kosten van een dubbel gegevenstype.
  6. Declareer een integer-variabele met de naam slots.
  7. Einde van de klas.
  8. De functie main () aanroepen. De programmalogica moet in zijn lichaam worden toegevoegd.
  9. Maak een object met de naam Y6 van het type Phone. Dit heet instantiatie.
  10. Maak een object met de naam Y7 van het type Phone. Dit heet instantiatie.
  11. Krijg toegang tot de variabele / lidkosten van de klasse Phone met behulp van het object Y6. De waarde is ingesteld op 100,0. De kosten van Y6 zijn nu ingesteld op 100,0.
  12. Toegang tot de variabele / led-slots van de klasse Phone met behulp van het object Y6. De waarde is ingesteld op 2. De slots voor Y6 is nu ingesteld op 2.
  13. Krijg toegang tot de variabele / lidkosten van klasse Phone met behulp van het object Y7. De waarde is ingesteld op 200,0. De kosten van Y7 zijn nu ingesteld op 200,0.
  14. Toegang tot de variabele / led-slots van de klasse Phone met behulp van het object Y7. De waarde is ingesteld op 2. De slots voor Y7 is nu ingesteld op 2.
  15. Druk de kosten van Y6 af op de console naast andere tekst.
  16. Druk de kosten van Y7 op de console af naast andere tekst.
  17. Druk het aantal slots voor Y6 af naast andere tekst.
  18. Druk het aantal slots voor Y7 af naast andere tekst.
  19. Het programma moet een waarde retourneren bij succesvolle voltooiing.
  20. Einde van de hoofdtekst van de functie main ().

Wat is een privéles?

Klasleden die als privé zijn gemarkeerd, zijn alleen toegankelijk via functies die binnen de klas zijn gedefinieerd. Elk object of elke functie die buiten de klasse is gedefinieerd, heeft geen directe toegang tot dergelijke leden. Een privéklaslid is alleen toegankelijk voor leden- en vriendenfuncties.

Wat is een beschermde klasse?

Klasleden die als beschermd zijn gemarkeerd, hebben een voordeel ten opzichte van degenen die als privé zijn gemarkeerd. Ze zijn toegankelijk voor functies binnen de klasse van hun definitie. Bovendien zijn ze toegankelijk vanuit afgeleide klassen.

Voorbeeld 2:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een klasse met de naam ClassA.
  4. Gebruik de modifier voor openbare toegang om het aan te maken klaslid te markeren als openbaar toegankelijk.
  5. Maak de functie met de naam set_a () waaraan één geheel getal val moet doorgegeven worden.
  6. Maak een functie met de naam get_a ().
  7. Gebruik de privétoegangsmodificator om het aan te maken klaslid te markeren als privé toegankelijk.
  8. Declareer een integervariabele met de naam a.
  9. Einde van de klas.
  10. Gebruik de klassenaam en de operator voor bereikresolutie om toegang te krijgen tot de functie get_a (). We willen definiëren wat de functie doet wanneer deze wordt aangeroepen.
  11. De functie get_a () moet de waarde van variabele a teruggeven wanneer deze wordt aangeroepen.
  12. Einde van de definitie van de functie get_a ().
  13. Gebruik de klassenaam en de scope-oplossingsoperator om toegang te krijgen tot de functie set_a (). We willen definiëren wat de functie doet wanneer deze wordt aangeroepen.
  14. De waarde van de variabele val toewijzen aan variabele a.
  15. Einde van de definitie van de functie set_a ().
  16. Roep de functie main () aan. De programmalogica moet worden toegevoegd in de body van deze functie.
  17. Maak een instantie van ClassA en geef deze de naam a.
  18. Gebruik de bovenstaande klasse-instantie en de functie set_a () om een ​​waarde van 20 toe te wijzen aan de variabele a.
  19. Wat tekst afdrukken naast de waarde van variabele a op de console. De waarde van variabele a wordt verkregen door de functie get_a () aan te roepen.
  20. Het programma moet waarde teruggeven na succesvolle voltooiing.
  21. Einde van de hoofdtekst van de functie ().

Voorbeeld 3:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een klasse met de naam ParentClass.
  4. Gebruik de beschermde toegangsmodificator om het te maken klaslid als beschermd te markeren.
  5. Maak een integer-variabele met de naam value.
  6. Einde van de klas.
  7. Maak een nieuwe klasse met de naam ChildClass die de ParentClass erft.
  8. Gebruik de beschermde toegangsmodificator om het aan te maken klaslid te markeren als toegankelijk voor onderliggende klassen.
  9. Maak de functie met de naam setId () waaraan één geheel getal x moet doorgegeven worden.
  10. De waarde van de variabele x toewijzen aan de variabele waarde.
  11. Einde van de definitie van de functie setId ().
  12. Maak een functie met de naam displayValue ().
  13. Druk de waarde van de variabele met de naam value op de console af naast andere tekst.
  14. Einde van de hoofdtekst van de functie displayValue ().
  15. Einde van de hoofdtekst van de klasse met de naam ChildClass.
  16. Roep de functie main () aan. De programmalogica moet worden toegevoegd in de body van deze functie.
  17. Maak een instantie van ChildClass en geef deze de naam c.
  18. Gebruik de bovenstaande klasse-instantie en de functie setId () om een ​​waarde van 21 toe te wijzen aan de variabele x.
  19. Gebruik de bovenstaande klasse-instantie om de functie met de naam displayValue () aan te roepen.
  20. Het programma moet waarde teruggeven na succesvolle voltooiing.
  21. Einde van de hoofdtekst van de functie ().

Functies van klassenleden

Functies helpen ons gegevens te manipuleren. Klaslidfuncties kunnen op twee manieren worden gedefinieerd:

  • Binnen de klassendefinitie
  • Buiten de klassendefinitie

Als een functie moet worden gedefinieerd buiten een klassedefinitie, moeten we de scope-resolutieoperator (: :) gebruiken. Dit moet vergezeld gaan van de klasse- en functienamen.

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te gebruiken.
  2. Neem het string header-bestand op in ons programma om zijn functies te gebruiken.
  3. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  4. Maak een klas met de naam Guru99.
  5. Gebruik de modifier voor openbare toegang om de klasleden die we gaan maken te markeren als openbaar toegankelijk.
  6. Maak een stringvariabele met de naam tutorial_name.
  7. Maak een integervariabele met de naam id.
  8. Maak een functie met de naam printname (). Deze functie is niet gedefinieerd binnen de klassedefinitie.
  9. Maak een functie met de naam printed (). Deze functie is gedefinieerd binnen de klassendefinitie. Het lichaam is toegevoegd binnen de klassendefinitie.
  10. Druk de waarde van variabele id af naast andere tekst op de console. Merk op dat dit is toegevoegd in de body van printid () functie. Het wordt alleen uitgevoerd als de functie printid () wordt aangeroepen.
  11. Einde van het hoofdgedeelte van de functie printid ().
  12. Einde van het lichaam van de klas Guru99.
  13. Het begin van de definitie van de functie printname ().
  14. Druk de waarde van variabele tutorial_name op de console af naast andere tekst. Merk op dat dit is toegevoegd in de body van printname () functie. Het wordt alleen uitgevoerd als de functie printname () wordt aangeroepen.
  15. Einde van de definitie van de functie printname ().
  16. Roep de functie main () aan. De programmalogica moet worden toegevoegd in de body van deze functie.
  17. Maak een instantie van klasse Guru99 en geef deze de naam guru99.
  18. Gebruik de bovenstaande instantie om de waarde C ++ toe te wijzen aan de variabele tutorial_name.
  19. Gebruik de instantie guru99 om een ​​waarde van 1001 toe te wijzen aan de variabele id.
  20. Gebruik de instantie guru99 om de functie printname () aan te roepen.
  21. Roep het einde (eindregel) commando aan om een ​​nieuwe lege regel op de console af te drukken.
  22. Gebruik de instantie guru99 om de functie printid () aan te roepen.
  23. Het programma moet waarde teruggeven na succesvolle voltooiing.
  24. Einde van de hoofdtekst van de functie main ().

Constructeurs en vernietigers

Wat zijn constructeurs?

Constructen zijn speciale functies die objecten initialiseren. De C ++ - compilers roepen een constructor aan bij het maken van een object. De constructeurs helpen om waarden toe te kennen aan klasleden. Dit is natuurlijk nadat ze wat geheugenruimte hebben gekregen.

Wat zijn vernietigers?

Destructors helpen daarentegen om klasse-objecten te vernietigen.

De constructornaam moet vergelijkbaar zijn met de klassenaam. Constructeurs hebben geen retourtype.

De constructor kan binnen of buiten de hoofdtekst van de klasse worden gedefinieerd. Indien gedefinieerd buiten de hoofdtekst van de klasse, moet deze worden gedefinieerd met de klassenaam en de operator voor bereikresolutie (: :).

Voorbeeld 3:

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

Uitgang:

Hier is een screenshot van de code:

Code Verklaring:

  1. Voeg het iostream-headerbestand toe aan de code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een klasse met de naam ClassA.
  4. Gebruik de modificator voor openbare toegang om het lid dat we gaan maken te markeren als openbaar toegankelijk.
  5. Maak een constructor voor de klas.
  6. Tekst die op de console moet worden afgedrukt als de constructor wordt aangeroepen. De endl is een C ++ -zoekwoord, wat eindregel betekent. Het verplaatst de muiscursor naar de volgende regel.
  7. Einde van de hoofdtekst van de klassenconstructor.
  8. Maak een vernietiger voor de klas.
  9. Tekst die op de console moet worden afgedrukt wanneer de destructor wordt aangeroepen. De endl is een C ++ -woord, wat eindregel betekent. Het verplaatst de muiscursor naar de volgende regel.
  10. Einde van het lichaam van de vernietiger.
  11. Einde van de klas.
  12. Roep de functie main () aan. De programmalogica moet worden toegevoegd in de body van deze functie.
  13. Maak een klasseobject en geef het de naam a. De constructor wordt aangeroepen.
  14. Maak een integer-variabele met de naam p en wijs deze een waarde van 1 toe.
  15. Maak een if-instructieblok met behulp van de variabele p.
  16. Maak een klasseobject en geef het de naam b. De vernietiger wordt gebeld.
  17. Einde van de body van de if-instructie.
  18. Einde van de hoofdtekst van de functie main ().

Overzicht:

  • C ++ is objectgeoriënteerd.
  • Klassen vormen de belangrijkste kenmerken van C ++ die het objectgeoriënteerd maken.
  • Een C ++ -klasse combineert gegevens en methoden voor het manipuleren van de gegevens tot één.
  • Een klasse is een blauwdruk voor een object.
  • Klassen bepalen de vorm van een object.
  • De gegevens en methoden in een klasse worden klasseleden genoemd.
  • Om toegang te krijgen tot klasleden, moet u een instantie van de klas gebruiken.
  • Om een ​​klasse te maken, gebruiken we het trefwoord class.
  • De functies van het klaslid kunnen binnen of buiten een klas worden gedefinieerd.