C++ Klassen & Objekte: Praktischer Guide mit Code‑Beispielen
Was ist eine Klasse?

In der Abbildung erzeugt ein einziger Prototyp zwei unterschiedliche Häuser mit verschiedenen Eigenschaften.
In diesem Tutorial lernen Sie:
- Was eine Klasse ist und warum sie in C++ wichtig ist
- Konkrete Klassenbeispiele
- Die Rolle der Zugriffsmodifizierer
privateundpublic - Objekte erzeugen (Instanziierung)
- Sicheren Zugriff auf Datenelemente
- Member‑Funktionen innerhalb und außerhalb der Klassendefinition
- Konstruktoren und Destruktoren in Aktion
Klassendeklaration
Eine Klasse zu deklarieren ist einfach: Verwenden Sie das Schlüsselwort class, gefolgt vom Klassennamen, und fassen Sie den Körper in geschweifte Klammern.
Syntax
class className {
// datenelemente
// memberfunktionen
};
- className – Bezeichner für Ihre Klasse.
- Datenelemente werden typischerweise als Variablen deklariert.
- Memberfunktionen stellen Verhalten bereit.
Zugriffsmodifizierer: private vs. public
Zugriffsmodifizierer steuern die Sichtbarkeit von Klassenmembern.
- private – Member sind nur innerhalb der Klasse oder ihrer Friends zugänglich.
- public – Member können von überall dort zugegriffen werden, wo das Objekt sichtbar ist.
Objekte erzeugen (Instanziierung)
Objekte sind Instanzen einer Klasse. Die Deklaration folgt demselben Muster wie bei Variablen: className objectName;
Syntax
className objectName;
- className – die Klasse, aus der das Objekt erstellt wird.
- objectName – Bezeichner für das neue Objekt.
Instanziierung allokiert Speicher für das Objekt und kann dessen Konstruktor auslösen.
Auf Datenelemente zugreifen
Öffentliche Datenelemente werden über den Punkt‑Operator (.) angesprochen.
Beispiel
#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;
}
Ausgabe:

Warum Getter/Setter?
Direkter Zugriff oder Modifikation von Daten kann Kapselung brechen. Getter‑ und Setter‑Memberfunktionen bieten kontrollierten Zugriff.
Beispiel mit Kapselung
#include <iostream>
using namespace std;
class ClassA {
public:
void setA(int val);
int getA() const;
private:
int a;
};
int ClassA::getA() const { return a; }
void ClassA::setA(int val) { a = val; }
int main() {
ClassA obj;
obj.setA(20);
cout << "Value of a is: " << obj.getA();
return 0;
}
Ausgabe:

Protected Member und Vererbung
Geschützte Member sind innerhalb der Klasse und von abgeleiteten Klassen zugänglich, was kontrollierte Vererbung ermöglicht.
Beispiel
#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;
}
Ausgabe:

Member‑Funktionen innerhalb vs. außerhalb der Klasse
Member‑Funktionen können inline innerhalb der Klasse definiert oder nur deklariert und später mithilfe des Scope‑Resolution‑Operators :: definiert werden.
Beispiel
#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 guru;
guru.tutorial_name = "C++";
guru.id = 1001;
guru.printName();
cout << endl;
guru.printId();
return 0;
}
Ausgabe:

Konstruktoren und Destruktoren
Konstruktoren initialisieren Objekte bei ihrer Erstellung, Destruktoren räumen kurz vor der Zerstörung eines Objekts auf.
Beispiel
#include <iostream>
using namespace std;
class ClassA {
public:
ClassA() { cout << "Class constructor called" << endl; }
~ClassA() { cout << "Class destructor called" << endl; }
};
int main() {
ClassA a; // Konstruktor aufgerufen
int p = 1;
if (p) {
ClassA b; // Konstruktor aufgerufen, Destruktor am Blockende
} // Destruktor für 'a' hier aufgerufen
return 0;
}
Ausgabe:

Wichtigste Punkte
- C++ ist grundlegend objektorientiert; Klassen sind die Bausteine.
- Eine Klasse gruppiert Daten und zugehörige Funktionen zu einer wiederverwendbaren Blaupause.
- Nutzen Sie
public,private,protectedzur Durchsetzung von Kapselung. - Objekte mit Klassennamen gefolgt vom Objektnamen instanziieren.
- Öffentliche Member über Punkt‑Operator zugreifen; für private Daten Getter/Setter nutzen.
- Member‑Funktionen inline oder außerhalb per
::definieren. - Konstruktoren initialisieren Objekte; Destruktoren übernehmen Cleanup.
C Sprache
- C# Klassen & Objekte: Fundamente für robustes OOP
- C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
- C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
- C++ Klassentemplates meistern: Ein praktischer Leitfaden
- C++ Operatoren erklärt: Typen, Beispiele und Beispielprogramme
- C++ switch‑case meistern: Syntax, Einsatz und Praxisbeispiele
- C++ Dynamische Array‑Allokation: Praktischer Leitfaden mit Code‑Beispielen
- C++ Structs erklärt mit praktischem Beispiel
- std::list in C++ meistern: Syntax, Funktionen & praktische Beispiele
- C++ Struct vs. Class: Wichtige Unterschiede, Syntax und beste Anwendungsfälle