Was ist eine Klasse?
Eine C ++ - Klasse kombiniert Daten und Methoden zum Bearbeiten der Daten in einer. Klassen bestimmen auch die Formen von Objekten. Die in einer Klasse enthaltenen Daten und Methoden werden als Klassenmitglieder bezeichnet. Eine Klasse ist ein benutzerdefinierter Datentyp. Um auf die Klassenmitglieder zuzugreifen, verwenden wir eine Instanz der Klasse. Sie können eine Klasse als Blaupause für ein Objekt sehen.
Eine Klasse ist ein Prototyp für ein Haus. Es zeigt die Position und Größe von Türen, Fenstern, Böden usw. Aus diesen Beschreibungen können wir ein Haus bauen. Das Haus wird zum Objekt. Aus dem Prototyp können viele Häuser erstellt werden. Es ist auch möglich, viele Objekte aus einer Klasse zu erstellen.
In der obigen Abbildung haben wir einen einzelnen Hausprototyp. Aus diesem Prototyp haben wir zwei Häuser mit unterschiedlichen Merkmalen erstellt.
In diesem Tutorial lernen Sie:
- Was ist eine Klasse?
- Klassenbeispiel
- Private und öffentliche Schlüsselwörter
- Objektdefinition
- Zugriff auf Datenelemente
- Funktionen für Klassenmitglieder
- Konstruktoren und Destruktoren
Klassenerklärung
In C + wird eine Klasse mit dem Schlüsselwort class definiert. Darauf sollte der Klassenname folgen. Der Klassenkörper wird dann zwischen geschweiften Klammern {} hinzugefügt.
Syntax:
class class-name{// data// functions};
- Der Klassenname ist der Name, der der Klasse zugewiesen werden soll.
- Die Daten sind die Daten für die Klasse, die normalerweise als Variablen deklariert werden.
- Die Funktionen sind die Klassenfunktionen.
Private und öffentliche Schlüsselwörter
Sie müssen auf diese beiden Schlüsselwörter gestoßen sein. Sie sind Zugriffsmodifikatoren.
- Privat:
Wenn das private Schlüsselwort zum Definieren einer Funktion oder Klasse verwendet wird, wird es privat. Diese sind nur innerhalb der Klasse zugänglich.
- Öffentlichkeit:
Das öffentliche Schlüsselwort hingegen macht Daten / Funktionen öffentlich. Diese sind von außerhalb der Klasse zugänglich.
Objektdefinition
Objekte werden aus Klassen erstellt. Klassenobjekte werden auf ähnliche Weise deklariert wie Variablen. Der Klassenname muss beginnen, gefolgt vom Objektnamen. Das Objekt des Klassentyps.
Syntax:
class-name object-name;
- Der Klassenname ist der Name der Klasse, aus der ein Objekt erstellt werden soll.
- Der Objektname ist der Name, der dem neuen Objekt zugewiesen werden soll.
Dieser Vorgang zum Erstellen eines Objekts aus einer Klasse wird als Instanziierung bezeichnet.
Zugriff auf Datenelemente
Um auf öffentliche Mitglieder einer Klasse zuzugreifen, verwenden wir den Punktoperator (.). Dies sind Mitglieder, die mit dem Modifikator "Öffentlicher Zugriff" gekennzeichnet sind.
Beispiel 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;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Fügen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen nutzen zu können.
- Einfügen des Standard-Namespace in unseren Code, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Deklarieren Sie eine Klasse namens Phone.
- Verwenden Sie den Modifikator für den öffentlichen Zugriff, um die Variablen, die wir erstellen möchten, als öffentlich zugänglich zu markieren.
- Deklarieren Sie die variablen Kosten eines doppelten Datentyps.
- Deklarieren Sie eine Ganzzahlvariable mit dem Namen slots.
- Ende des Klassenkörpers.
- Aufruf der Funktion main (). Die Programmlogik sollte in ihrem Hauptteil hinzugefügt werden.
- Erstellen Sie ein Objekt mit dem Namen Y6 vom Typ Telefon. Dies wird als Instanziierung bezeichnet.
- Erstellen Sie ein Objekt mit dem Namen Y7 vom Typ Telefon. Dies wird als Instanziierung bezeichnet.
- Greifen Sie mit dem Objekt Y6 auf die Variablen- / Mitgliedskosten der Klasse Telefon zu. Der Wert ist auf 100.0 eingestellt. Die Kosten für Y6 sind jetzt auf 100,0 festgelegt.
- Greifen Sie mit dem Objekt Y6 auf die Variablen- / Element-Slots der Klasse Phone zu. Der Wert ist auf 2 eingestellt. Die Steckplätze für Y6 sind jetzt auf 2 eingestellt.
- Greifen Sie mit dem Objekt Y7 auf die Variablen- / Mitgliedskosten der Klasse Telefon zu. Der Wert ist auf 200,0 eingestellt. Die Kosten für Y7 sind jetzt auf 200,0 festgelegt.
- Greifen Sie mit dem Objekt Y7 auf die Variablen- / Element-Slots der Klasse Phone zu. Der Wert ist auf 2 eingestellt. Die Steckplätze für Y7 sind jetzt auf 2 eingestellt.
- Drucken Sie die Kosten für Y6 neben anderem Text auf die Konsole.
- Drucken Sie die Kosten für Y7 neben anderem Text auf die Konsole.
- Drucken Sie die Anzahl der Slots für Y6 neben anderem Text.
- Drucken Sie die Anzahl der Slots für Y7 neben anderem Text aus.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Hauptteils der Funktion main ().
Was ist eine Privatklasse?
Auf als privat gekennzeichnete Klassenmitglieder kann nur über Funktionen zugegriffen werden, die in der Klasse definiert sind. Objekte oder Funktionen, die außerhalb der Klasse definiert sind, können nicht direkt auf solche Mitglieder zugreifen. Auf ein privates Klassenmitglied können nur Mitglieder- und Freundfunktionen zugreifen.
Was ist eine geschützte Klasse?
Als geschützt gekennzeichnete Klassenmitglieder haben einen Vorteil gegenüber den als privat gekennzeichneten. Auf sie kann über Funktionen innerhalb der Klasse ihrer Definition zugegriffen werden. Darüber hinaus kann von abgeleiteten Klassen auf sie zugegriffen werden.
Beispiel 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;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Fügen Sie die iostream-Headerdatei in unseren Code ein, um ihre Funktionen zu nutzen.
- Fügen Sie den Standard-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Erstellen Sie eine Klasse mit dem Namen ClassA.
- Verwenden Sie den Modifikator "Öffentlicher Zugriff", um das zu erstellende Klassenmitglied als öffentlich zugänglich zu markieren.
- Erstellen Sie die Funktion set_a (), die einen ganzzahligen Wert val annimmt.
- Erstellen Sie eine Funktion mit dem Namen get_a ().
- Verwenden Sie den Modifikator für den privaten Zugriff, um das zu erstellende Klassenmitglied als privat zugänglich zu markieren.
- Deklarieren Sie eine Ganzzahlvariable mit dem Namen a.
- Ende des Klassenkörpers.
- Verwenden Sie den Klassennamen und den Bereichsauflösungsoperator, um auf die Funktion get_a () zuzugreifen. Wir wollen definieren, was die Funktion beim Aufrufen tut.
- Die Funktion get_a () sollte beim Aufrufen den Wert der Variablen a zurückgeben.
- Ende der Definition der Funktion get_a ().
- Verwenden Sie den Klassennamen und den Bereichsauflösungsoperator, um auf die Funktion set_a () zuzugreifen. Wir wollen definieren, was die Funktion beim Aufrufen tut.
- Zuweisen des Werts der Variablen val zur Variablen a.
- Ende der Definition der Funktion set_a ().
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
- Erstellen Sie eine Instanz von ClassA und geben Sie ihr den Namen a.
- Verwenden Sie die obige Klasseninstanz und die Funktion set_a (), um der Variablen a den Wert 20 zuzuweisen.
- Drucken von Text neben dem Wert der Variablen a auf der Konsole. Der Wert der Variablen a wird durch Aufrufen der Funktion get_a () erhalten.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Funktionskörpers main ().
Beispiel 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;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Fügen Sie die iostream-Headerdatei in unseren Code ein, um ihre Funktionen zu nutzen.
- Fügen Sie den Standard-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Erstellen Sie eine Klasse mit dem Namen ParentClass.
- Verwenden Sie den Modifikator für geschützten Zugriff, um das zu erstellende Klassenmitglied als geschützt zu markieren.
- Erstellen Sie eine ganzzahlige Variable mit dem Namen value.
- Ende des Klassenkörpers.
- Erstellen Sie eine neue Klasse mit dem Namen ChildClass, die die ParentClass erbt.
- Verwenden Sie den Modifikator für den geschützten Zugriff, um das zu erstellende Klassenmitglied als für untergeordnete Klassen zugänglich zu markieren.
- Erstellen Sie die Funktion setId (), die einen ganzzahligen Wert x annimmt.
- Zuweisen des Werts der Variablen x zum Variablenwert.
- Ende der Definition der Funktion setId ().
- Erstellen Sie eine Funktion mit dem Namen displayValue ().
- Drucken Sie den Wert der Variablen mit dem Namen value neben anderem Text auf der Konsole aus.
- Ende des Hauptteils der Funktion displayValue ().
- Ende des Körpers der Klasse mit dem Namen ChildClass.
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
- Erstellen Sie eine Instanz von ChildClass und geben Sie ihr den Namen c.
- Verwenden Sie die obige Klasseninstanz und die Funktion setId (), um der Variablen x den Wert 21 zuzuweisen.
- Verwenden Sie die obige Klasseninstanz, um die Funktion displayValue () aufzurufen.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Funktionskörpers main ().
Funktionen für Klassenmitglieder
Funktionen helfen uns, Daten zu manipulieren. Klassenmitgliedsfunktionen können auf zwei Arten definiert werden:
- Innerhalb der Klassendefinition
- Außerhalb der Klassendefinition
Wenn eine Funktion außerhalb einer Klassendefinition definiert werden soll, müssen wir den Operator für die Bereichsauflösung (: :) verwenden. Dies sollte von den Klassen- und Funktionsnamen begleitet werden.
Beispiel 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;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Nehmen Sie die iostream-Header-Datei in unser Programm auf, um ihre Funktionen zu nutzen.
- Fügen Sie die String-Header-Datei in unser Programm ein, um ihre Funktionen zu nutzen.
- Fügen Sie den Standard-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Erstellen Sie eine Klasse mit dem Namen Guru99.
- Verwenden Sie den Modifikator für den öffentlichen Zugriff, um die Klassenmitglieder, die wir erstellen möchten, als öffentlich zugänglich zu markieren.
- Erstellen Sie eine Zeichenfolgenvariable mit dem Namen tutorial_name.
- Erstellen Sie eine Ganzzahlvariable mit dem Namen id.
- Erstellen Sie eine Funktion mit dem Namen printname (). Diese Funktion ist in der Klassendefinition nicht definiert.
- Erstellen Sie eine Funktion mit dem Namen print (). Diese Funktion wird in der Klassendefinition definiert. Sein Körper wurde innerhalb der Klassendefinition hinzugefügt.
- Drucken Sie den Wert der Variablen-ID neben anderem Text auf der Konsole. Beachten Sie, dass dies im Hauptteil der Funktion printid () hinzugefügt wurde. Es wird nur ausgeführt, wenn die Funktion printid () aufgerufen wird.
- Ende des Funktionskörpers printid ().
- Ende des Körpers der Klasse Guru99.
- Der Beginn der Definition der Funktion printname ().
- Drucken Sie den Wert der Variablen tutorial_name neben anderem Text auf der Konsole aus. Beachten Sie, dass dies im Hauptteil der Funktion printname () hinzugefügt wurde. Es wird nur ausgeführt, wenn die Funktion printname () aufgerufen wird.
- Ende der Definition der Funktion printname ().
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
- Erstellen Sie eine Instanz der Klasse Guru99 und geben Sie ihr den Namen guru99.
- Verwenden Sie die obige Instanz, um der Variablen tutorial_name den Wert C ++ zuzuweisen.
- Verwenden Sie die guru99-Instanz, um der Variablen-ID den Wert 1001 zuzuweisen.
- Verwenden Sie die Instanz guru99, um die Funktion printname () aufzurufen.
- Rufen Sie den Befehl end (end line) auf, um eine neue leere Zeile auf der Konsole zu drucken.
- Verwenden Sie die Instanz guru99, um die Funktion printid () aufzurufen.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Hauptteils der Funktion main ().
Konstruktoren und Destruktoren
Was sind Konstruktoren?
Konstrukte sind spezielle Funktionen, die Objekte initialisieren. Die C ++ - Compiler rufen beim Erstellen eines Objekts einen Konstruktor auf. Die Konstruktoren helfen dabei, Klassenmitgliedern Werte zuzuweisen. Dies geschieht natürlich, nachdem ihnen Speicherplatz zugewiesen wurde.
Was sind Zerstörer?
Destruktoren hingegen helfen, Klassenobjekte zu zerstören.
Der Konstruktorname muss dem Klassennamen ähnlich sein. Konstruktoren haben keinen Rückgabetyp.
Der Konstruktor kann innerhalb oder außerhalb des Klassenkörpers definiert werden. Wenn es außerhalb des Klassenkörpers definiert ist, sollte es mit dem Klassennamen und dem Bereichsauflösungsoperator (: :) definiert werden.
Beispiel 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Fügen Sie die iostream-Headerdatei in den Code ein, um ihre Funktionen zu verwenden.
- Fügen Sie den Standard-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Erstellen Sie eine Klasse mit dem Namen ClassA.
- Verwenden Sie den Modifikator für den öffentlichen Zugriff, um das Mitglied, das Sie erstellen möchten, als öffentlich zugänglich zu markieren.
- Erstellen Sie einen Konstruktor für die Klasse.
- Text, der auf der Konsole gedruckt werden soll, wenn der Konstruktor aufgerufen wird. Das endl ist ein C ++ - Schlüsselwort, was Endzeile bedeutet. Es bewegt den Mauszeiger in die nächste Zeile.
- Ende des Körpers des Klassenkonstruktors.
- Erstellen Sie einen Destruktor für die Klasse.
- Text, der auf der Konsole gedruckt werden soll, wenn der Destruktor aufgerufen wird. Das endl ist ein C ++ - Schlüsselwort, was Endzeile bedeutet. Es bewegt den Mauszeiger in die nächste Zeile.
- Ende des Körpers des Zerstörers.
- Ende des Klassenkörpers.
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
- Erstellen Sie ein Klassenobjekt und geben Sie ihm den Namen a. Der Konstruktor wird aufgerufen.
- Erstellen Sie eine Ganzzahlvariable mit dem Namen p und weisen Sie ihr den Wert 1 zu.
- Erstellen Sie einen if-Anweisungsblock mit der Variablen p.
- Erstellen Sie ein Klassenobjekt und geben Sie ihm den Namen. B. Der Destruktor wird aufgerufen.
- Ende des Hauptteils der if-Anweisung.
- Ende des Körpers der main () - Funktion.
Zusammenfassung:
- C ++ ist objektorientiert.
- Klassen bilden die Hauptmerkmale von C ++, die es objektorientiert machen.
- Eine C ++ - Klasse kombiniert Daten und Methoden zum Bearbeiten der Daten in einer.
- Eine Klasse ist eine Blaupause für ein Objekt.
- Klassen bestimmen die Form eines Objekts.
- Die in einer Klasse enthaltenen Daten und Methoden werden als Klassenmitglieder bezeichnet.
- Um auf Klassenmitglieder zuzugreifen, sollten Sie eine Instanz der Klasse verwenden.
- Um eine Klasse zu erstellen, verwenden wir das Schlüsselwort class.
- Die Klassenelementfunktionen können innerhalb oder außerhalb einer Klasse definiert werden.