C++ Klasse und Objekt mit Beispiel
Was ist eine Klasse?
A C++ Eine Klasse kombiniert Daten und Methoden zur Datenmanipulation zu einem Ganzen. Klassen bestimmen auch die Form 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 betrachten.
Eine Klasse ist ein Prototyp fรผr ein Haus. Sie zeigt die Lage und Grรถรe von Tรผren, Fenstern, Bรถden usw. Aus diesen Beschreibungen kรถnnen wir ein Haus konstruieren. Das Haus wird zum Objekt. Aus dem Prototyp kรถnnen viele Hรคuser erstellt werden. Auรerdem kรถnnen aus einer Klasse viele Objekte erstellt werden.
In der obigen Abbildung haben wir einen Einfamilienhaus-Prototyp. Aus diesem Prototyp haben wir zwei Hรคuser mit unterschiedlichen Merkmalen erstellt.
Klassendeklaration
In C+ wird eine Klasse mit dem Schlรผsselwort class definiert. Darauf sollte der Klassenname folgen. Der Klassenkรถrper wird dann zwischen geschweiften Klammern {} eingefรผgt.
Syntax
class class-name
{
// data
// functions
};
- Der Klassenname ist der Name, der der Klasse zugewiesen werden soll.
- Bei den Daten handelt es sich um die Daten fรผr die Klasse, die normalerweise als Variablen deklariert werden.
- Die Funktionen sind die Klassenfunktionen.
Private und รถffentliche Schlรผsselwรถrter
Diese beiden Schlรผsselwรถrter sind Ihnen bestimmt schon einmal begegnet. Sie sind Zugriffsmodifikatoren.
- Zur Alleinbenutzung:
Wenn das Schlรผsselwort private zum Definieren einer Funktion oder Klasse verwendet wird, wird es privat. Auf diese kann nur innerhalb der Klasse zugegriffen werden.
- รffentlichkeit:
Das Schlรผsselwort public 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 Prozess der Erstellung eines Objekts aus einer Klasse wird als Instanziierung bezeichnet.
Zugreifen auf Datenelemente
Um auf รถffentliche Mitglieder einer Klasse zuzugreifen, verwenden wir den Punktoperator (.). Dies sind Mitglieder, die mit dem Modifikator fรผr รถffentlichen Zugriff gekennzeichnet sind.
Beispiel 1
#include <iostream>
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;
}
Ausgang:
Hier ist ein Screenshot des Codes:
Code Erklรคrung:
- Binden Sie die iostream-Header-Datei in unseren Code ein, um deren Funktionen nutzen zu kรถnnen.
- Einbinden des std-Namespace in unseren Code, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Deklarieren Sie eine Klasse mit dem Namen 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 ganzzahlige Variable mit dem Namen slots.
- Ende des Unterrichtskรถrpers.
- Aufruf der Funktion main(). Die Programmlogik sollte in den Hauptteil eingefรผ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 รผber das Objekt Y6 auf die Variablen-/Mitgliedskosten der Klasse Phone zu. Der Wert ist auf 100.0 gesetzt. Die Kosten fรผr Y6 sind jetzt auf 100.0 festgelegt.
- Greifen Sie mit dem Objekt Y6 auf die Variablen-/Mitgliedsslots der Klasse Phone zu. Der Wert ist auf 2 eingestellt. Die Steckplรคtze fรผr Y6 sind jetzt auf 2 eingestellt.
- Greifen Sie รผber das Objekt Y7 auf die Variablen-/Mitgliedskosten der Klasse Phone zu. Der Wert ist auf 200.0 gesetzt. Die Kosten fรผr Y7 sind jetzt auf 200.0 festgelegt.
- Greifen Sie mit dem Objekt Y7 auf die Variablen-/Mitgliedsslots 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 zusammen mit anderem Text auf der Konsole aus.
- Drucken Sie die Kosten fรผr Y7 zusammen mit anderem Text auf der Konsole aus.
- Drucken Sie die Anzahl der Steckplรคtze fรผr Y6 zusammen mit anderem Text aus.
- Drucken Sie die Anzahl der Steckplรคtze fรผr Y7 zusammen mit anderem Text aus.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
- Ende des Hauptteils der Funktion main().
Was ist eine Privatklasse?
Auf als privat markierte Klassenmitglieder kann nur durch innerhalb der Klasse definierte Funktionen zugegriffen werden. Auรerhalb der Klasse definierte Objekte oder Funktionen kรถnnen nicht direkt auf solche Mitglieder zugreifen. Auf ein privates Klassenmitglied kann nur รผber Mitglieds- und Freundfunktionen zugegriffen werden.
Was ist eine geschรผtzte Klasse?
Als geschรผtzt gekennzeichnete Klassenmitglieder haben gegenรผber den als privat gekennzeichneten Mitgliedern einen Vorteil. Auf sie kann von Funktionen innerhalb der Klasse ihrer Definition zugegriffen werden. Darรผber hinaus kann รผber abgeleitete Klassen auf sie zugegriffen werden.
Beispiel 2
#include <iostream>
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;
}
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklรคrung:
- Fรผgen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
- Fรผgen Sie den std-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 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 privaten Zugriffsmodifikator, um das zu erstellende Klassenmitglied als privat zugรคnglich zu markieren.
- Deklarieren Sie eine Ganzzahlvariable mit dem Namen a.
- Ende des Unterrichtskรถrpers.
- Verwenden Sie den Klassennamen und den Bereichsauflรถsungsoperator, um auf die Funktion get_a() zuzugreifen. Wir mรถchten definieren, was die Funktion tut, wenn sie aufgerufen wird.
- Die Funktion get_a() sollte beim Aufruf 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 mรถchten definieren, was die Funktion tut, wenn sie aufgerufen wird.
- 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 Aufruf der Funktion get_a() ermittelt.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
- Ende des Hauptteils der Funktion main().
Beispiel 3
#include <iostream>
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;
}
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklรคrung:
- Fรผgen Sie die iostream-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen.
- Fรผgen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Erstellen Sie eine Klasse mit dem Namen ParentClass.
- Verwenden Sie den Zugriffsmodifikator โgeschรผtztโ, um das zu erstellende Klassenmitglied als geschรผtzt zu markieren.
- Erstellen Sie eine ganzzahlige Variable mit dem Namen value.
- Ende des Unterrichtskรถrpers.
- Erstellen Sie eine neue Klasse mit dem Namen ChildClass, die die ParentClass erbt.
- Verwenden Sie den geschรผtzten Zugriffsmodifikator, 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().
- Geben Sie den Wert der Variablen mit dem Namen value zusammen mit anderem Text auf der Konsole aus.
- Ende des Hauptteils der Funktion displayValue().
- Ende des Hauptteils der Klasse namens 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 namens displayValue() aufzurufen.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
- Ende des Hauptteils der Funktion main().
Klassenmitgliedsfunktionen
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 Bereichsauflรถsungsoperator (::) verwenden. Dieser sollte von den Klassen- und Funktionsnamen begleitet werden.
Beispiel 2
#include <iostream>
#include <string>
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;
}
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklรคrung:
- Fรผgen Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen zu nutzen.
- Fรผgen Sie die String-Header-Datei in unser Programm ein, um dessen Funktionen zu nutzen.
- Fรผgen Sie den std-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 nicht in der Klassendefinition definiert.
- Erstellen Sie eine Funktion mit dem Namen print(). Diese Funktion wird innerhalb der Klassendefinition definiert. Sein Hauptteil wurde innerhalb der Klassendefinition hinzugefรผgt.
- Geben Sie den Wert der Variablen-ID zusammen mit anderem Text auf der Konsole aus. Beachten Sie, dass dies im Hauptteil der printid()-Funktion hinzugefรผgt wurde. Es wird nur ausgefรผhrt, wenn die Funktion printid() aufgerufen wird.
- Ende des Funktionskรถrpers printid().
- Ende des Hauptteils der Klasse Guru99.
- Der Beginn der Definition der Funktion printname().
- Geben Sie den Wert der Variablen โtutorial_nameโ zusammen mit 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 einen Wert von zuzuweisen C++ zur Variable tutorial_name.
- 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 (Endzeile) auf, um eine neue Leerzeile auf der Konsole zu drucken.
- Verwenden Sie die Instanz guru99, um die Funktion printid() aufzurufen.
- Das Programm muss bei 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. Der C++ Compiler ruft beim Erstellen eines Objekts einen Konstruktor auf. Die Konstruktoren helfen dabei, Klassenmitgliedern Werte zuzuweisen. Dies geschieht natรผrlich, nachdem ihnen etwas Speicherplatz zugewiesen wurde.
Was sind Destruktoren?
Destruktoren hingegen helfen dabei, Klassenobjekte zu zerstรถren.
Der Konstruktorname muss dem Klassennamen รคhneln. Konstruktoren haben keinen Rรผckgabetyp.
Der Konstruktor kann innerhalb oder auรerhalb des Klassenkรถrpers definiert werden. Wenn er auรerhalb des Klassenkรถrpers definiert wird, sollte er mit dem Klassennamen und dem Bereichsauflรถsungsoperator (::) definiert werden.
Beispiel 3
#include <iostream>
using namespace std;
class ClassA {
public:
ClassA() {
cout << "Class constructor called"<<endl;
}
~ClassA() {
cout << "Class destructor called"<<endl;
}
};
int main() {
ClassA a;
int p = 1;
if (p) {
ClassA b;
}
}
Ausgang:
Hier ist ein Screenshot des Codes:
Code-Erklรคrung:
- Fรผgen Sie die iostream-Headerdatei in den Code ein, um ihre Funktionen zu nutzen.
- Fรผgen Sie den std-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 wir erstellen mรถchten, als รถffentlich zugรคnglich zu markieren.
- Erstellen Sie einen Konstruktor fรผr die Klasse.
- Text, der auf der Konsole ausgegeben wird, wenn der Konstruktor aufgerufen wird. Das endl ist ein C++ Schlรผsselwort, das Zeilenende bedeutet. Es bewegt den Mauszeiger zur nรคchsten Zeile.
- Ende des Hauptteils des Klassenkonstruktors.
- Erstellen Sie einen Destruktor fรผr die Klasse.
- Text, der auf der Konsole ausgegeben wird, wenn der Destruktor aufgerufen wird. Das Endl ist ein C++ Schlรผsselwort, das Zeilenende bedeutet. Es bewegt den Mauszeiger zur nรคchsten Zeile.
- Ende des Kรถrpers des Destruktors.
- Ende des Unterrichtskรถ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 ganzzahlige Variable 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 Hauptteils der main()-Funktion.
Zusammenfassung
- C++ ist objektorientiert.
- Klassen bilden die Hauptmerkmale von C++ die es objektorientiert machen.
- A C++ Klasse kombiniert Daten und Methoden zur Manipulation der Daten zu einer Einheit.
- 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 Klassenmitgliedsfunktionen kรถnnen innerhalb oder auรerhalb einer Klasse definiert werden.








