Vad är en klass?
En C ++ klass kombinerar data och metoder för att manipulera data till en. Klasser bestämmer också föremålens former. Uppgifterna och metoderna i en klass kallas klassmedlemmar. En klass är en användardefinierad datatyp. För att komma åt klassmedlemmarna använder vi en instans av klassen. Du kan se en klass som en ritning för ett objekt.
En klass är en prototyp för ett hus. Den visar placeringen och storleken på dörrar, fönster, golv etc. Från dessa beskrivningar kan vi bygga ett hus. Huset blir objektet. Det är möjligt att skapa många hus från prototypen. Det är också möjligt att skapa många objekt från en klass.
I figuren ovan har vi en enda prototyp. Från denna prototyp har vi skapat två hus med olika funktioner.
I den här handledningen lär du dig:
- Vad är en klass?
- Klassexempel
- Privata och offentliga nyckelord
- Objektdefinition
- Åtkomst till datamedlemmar
- Klassmedlemsfunktioner
- Konstruktörer och förstörare
Klassdeklaration
I C + definieras en klass med hjälp av klassnyckelordet. Detta bör följas av klassnamnet. Klassens kropp läggs sedan till mellan lockiga hängslen {}.
Syntax:
class class-name{// data// functions};
- Klassnamnet är namnet som ska tilldelas klassen.
- Data är data för klassen, deklareras normalt som variabler.
- Funktionerna är klassfunktionerna.
Privata och offentliga nyckelord
Du måste ha stött på dessa två nyckelord. De är åtkomstmodifierare.
- Privat:
När det privata nyckelordet används för att definiera en funktion eller klass blir det privat. Sådana är endast tillgängliga inom klassen.
- Offentlig:
Det offentliga nyckelordet å andra sidan gör data / funktioner offentliga. Dessa är tillgängliga från utsidan av klassen.
Objektdefinition
Objekt skapas från klasser. Klassobjekt deklareras på samma sätt som variabler deklareras. Klassnamnet måste starta, följt av objektnamnet. Objektet av klasstypen.
Syntax:
class-name object-name;
- Klassnamnet är namnet på den klass som ett objekt ska skapas från.
- Objektnamnet är namnet som ska tilldelas det nya objektet.
Denna process för att skapa ett objekt från en klass kallas instantiering.
Åtkomst till datamedlemmar
För att komma åt offentliga medlemmar i en klass använder vi (.) Dot-operatören. Dessa är medlemmar som är markerade med modifierare för allmänheten.
Exempel 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;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att kunna använda dess funktioner.
- Inkluderar std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Förklara en klass som heter Telefon.
- Med hjälp av modifieraren för allmän åtkomst för att markera de variabler som vi ska skapa som allmänt tillgängliga.
- Deklarera den rörliga kostnaden för en dubbel datatyp.
- Förklara en heltalsvariabel med namnet slots.
- Slutet på klassens kropp.
- Ringer till huvudfunktionen (). Programmets logik bör läggas till i sin kropp.
- Skapa ett objekt som heter Y6 av typen Telefon. Detta kallas instantiering.
- Skapa ett objekt som heter Y7 av typen Telefon. Detta kallas instantiering.
- Få åtkomst till variabel / medlemskostnad för klass Telefon med objektet Y6. Värdet är inställt på 100,0. Kostnaden för Y6 är nu inställd på 100,0.
- Gå till variablerna / medlemsplatserna i klass Telefon med objektet Y6. Värdet är satt till 2. Platserna för Y6 är nu inställda på 2.
- Åtkomst till variabeln / medlemskostnaden för klass Telefon med objektet Y7. Värdet är inställt på 200,0. Kostnaden för Y7 är nu inställd på 200,0.
- Gå till variablerna / medlemsplatserna i klass Telefon med objektet Y7. Värdet är satt till 2. Platserna för Y7 är nu inställda på 2.
- Skriv ut kostnaden för Y6 på konsolen tillsammans med annan text.
- Skriv ut kostnaden för Y7 på konsolen tillsammans med annan text.
- Skriv ut antalet kortplatser för Y6 tillsammans med annan text.
- Skriv ut antalet kortplatser för Y7 tillsammans med annan text.
- Programmet måste returnera ett värde när det är klart.
- Slutet på huvudfunktionen ().
Vad är en privat klass?
Klassmedlemmar markerade som privata kan endast nås med funktioner som definierats inom klassen. Alla objekt eller funktioner som definieras utanför klassen kan inte komma åt sådana medlemmar direkt. En privat klassmedlem nås endast av medlemmar och vänfunktioner.
Vad är en skyddad klass?
Klassmedlemmar markerade som skyddade har en fördel jämfört med dem som är markerade som privata. De kan nås med funktioner inom klassens definition. Dessutom kan de nås från härledda klasser.
Exempel 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;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Skapa en klass som heter ClassA.
- Använd modifieraren för allmän tillgång för att markera klassmedlemmen som ska skapas som allmänt tillgänglig.
- Skapa funktionen med namnet set_a () som tar ett heltal värde val.
- Skapa en funktion som heter get_a ().
- Använd modifieraren för privat åtkomst för att markera klassmedlemmen som ska skapas som privat tillgänglig.
- Förklara en heltalsvariabel med namnet a.
- Slutet på klassens kropp.
- Använd klassnamnet och operatören för omfångsupplösning för att komma åt funktionen get_a (). Vi vill definiera vad funktionen gör när den anropas.
- Funktionen get_a () ska returnera värdet på variabel a när den anropas.
- Slutet på definitionen av funktionen get_a ().
- Använd klassnamnet och omfångsupplösningsoperatören för att komma åt funktionen set_a (). Vi vill definiera vad funktionen gör när den anropas.
- Tilldela värdet på variabeln val till variabel a.
- Slutet på definitionen av funktionen set_a ().
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Skapa en instans av ClassA och ge den namnet a.
- Använd ovanstående klassinstans och funktionen set_a () för att tilldela variabeln a värdet 20.
- Utskrift av text tillsammans med värdet för variabel a på konsolen. Värdet på variabel a erhålls genom att anropa funktionen get_a ().
- Programmet måste returnera värde när det är klart.
- Slutet på funktionen huvud huvud ().
Exempel 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;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Skapa en klass som heter ParentClass.
- Använd den skyddade åtkomstmodifieraren för att markera klassmedlemmen som ska skapas som skyddad.
- Skapa ett heltal variabel med namnet värde.
- Slutet på klassens kropp.
- Skapa en ny klass med namnet ChildClass som ärver ParentClass.
- Använd den skyddade åtkomstmodifieraren för att markera klassmedlemmen som ska skapas som tillgänglig för barnklasser.
- Skapa funktionen med namnet setId () som tar ett heltal x.
- Tilldela värdet på variabeln x till variabelvärdet.
- Slutet på definitionen av funktionen setId ().
- Skapa en funktion som heter displayValue ().
- Skriv ut värdet på variabeln med namnet värde på konsolen tillsammans med annan text.
- Slutet på huvuddelen av funktionsdisplayValue ().
- Slutet på kroppen i klassen som heter ChildClass.
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Skapa en instans av ChildClass och ge den namnet c.
- Använd klassinstansen ovan och funktionen setId () för att tilldela variabeln x ett värde på 21.
- Använd ovanstående klassinstans för att anropa funktionen som heter displayValue ().
- Programmet måste returnera värde när det är klart.
- Slutet på funktionen huvud huvud ().
Klassmedlemsfunktioner
Funktioner hjälper oss att manipulera data. Klassmedlemsfunktioner kan definieras på två sätt:
- Inuti klassdefinitionen
- Utanför klassdefinitionen
Om en funktion ska definieras utanför en klassdefinition måste vi använda omfångsupplösningsoperatören (: :). Detta bör åtföljas av klass- och funktionsnamnen.
Exempel 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;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vårt program för att använda dess funktioner.
- Inkludera stränghuvudfilen i vårt program för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Skapa en klass som heter Guru99.
- Använd modifieraren för allmän tillgång för att markera klassmedlemmarna som vi ska skapa som allmänt tillgängliga.
- Skapa en strängvariabel med namnet tutorial_name.
- Skapa en heltalsvariabel med namnet id.
- Skapa en funktion som heter utskriftsnamn (). Denna funktion definieras inte inom klassdefinitionen.
- Skapa en funktion med namnet tryckt (). Denna funktion definieras inom klassdefinitionen. Dess kropp har lagts till inom klassdefinitionen.
- Skriv ut värdet på variabel-id tillsammans med annan text på konsolen. Observera att detta har lagts till i funktionen för printid (). Den körs bara när funktionen printid () anropas.
- Slutet på funktionen av funktionen printid ().
- Slut på kroppen i klassen Guru99.
- Början på definition av funktionen utskriftsnamn ().
- Skriv ut värdet på variabeln tutorial_name på konsolen tillsammans med annan text. Observera att detta har lagts till i funktionen för utskriftsnamn (). Den körs bara när funktionen printname () anropas.
- Slutet på definitionen av funktionen printname ().
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Skapa en instans av klass Guru99 och ge den namnet guru99.
- Använd ovanstående instans för att tilldela ett värde på C ++ till variabeln tutorial_name.
- Använd förekomsten guru99 för att tilldela värdet 1001 till variabeln id.
- Använd förekomsten guru99 för att ringa funktionen utskriftsnamn ().
- Ring kommandot slut (slutrad) för att skriva ut en ny tom rad på konsolen.
- Använd förekomsten guru99 för att anropa funktionen printid ().
- Programmet måste returnera värde när det är klart.
- Slutet på huvudfunktionen ().
Konstruktörer och förstörare
Vad är konstruktörer?
Konstruktioner är specialfunktioner som initierar objekt. C ++ - kompilatorerna anropar en konstruktör när de skapar ett objekt. Konstruktörerna hjälper till att tilldela värden till klassmedlemmarna. Naturligtvis är detta efter att de har tilldelats lite minnesutrymme.
Vad är förstörare?
Destruktörer å andra sidan hjälper till att förstöra klassobjekt.
Konstruktörens namn måste likna klassnamnet. Konstruktörer har ingen returtyp.
Konstruktören kan definieras inom eller utanför klassens kropp. Om det definieras utanför klassens kropp bör det definieras med klassnamnet och operatören för omfångsupplösning (: :).
Exempel 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-huvudfilen i koden för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Skapa en klass som heter ClassA.
- Använd modifieraren för allmän åtkomst för att markera den medlem som vi ska skapa som allmänt tillgänglig.
- Skapa en konstruktör för klassen.
- Text som ska skrivas ut på konsolen när konstruktören anropas. Endl är ett C ++ nyckelord, vilket betyder slutrad. Den flyttar muspekaren till nästa rad.
- Slutet på klasskonstruktörens kropp.
- Skapa en förstörare för klassen.
- Text som ska skrivas ut på konsolen när förstöraren anropas. Endl är ett C ++ nyckelord, vilket betyder slutrad. Den flyttar muspekaren till nästa rad.
- Slut på förstörarens kropp.
- Slutet på klassens kropp.
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Skapa ett klassobjekt och ge det namnet a. Konstruktören kommer att anropas.
- Skapa en heltalsvariabel med namnet p och tilldela den värdet 1.
- Skapa ett if-satsblock med variabeln p.
- Skapa ett klassobjekt och ge det namnet b. Destruktorn kommer att kallas.
- Slutet på kroppen om if-uttalandet.
- Slutet på huvudfunktionens () kropp.
Sammanfattning:
- C ++ är objektorienterad.
- Klasser utgör huvudfunktionerna i C ++ som gör den objektorienterad.
- En C ++ klass kombinerar data och metoder för att manipulera data till en.
- En klass är en ritning för ett objekt.
- Klasser bestämmer formen på ett objekt.
- Uppgifterna och metoderna i en klass kallas klassmedlemmar.
- För att komma åt klassmedlemmar bör du använda en instans av klassen.
- För att skapa en klass använder vi klassnyckelordet.
- Klassmedlemsfunktionerna kan definieras inom eller utanför en klass.