Strukturvererbung in C++

Zeeshan Afridi 15 Februar 2024
  1. Was ist Vererbung in C++
  2. Vererbungsarten in C++
  3. Strukturvererbung in C++
Strukturvererbung in C++

Strukturen und Klassen sind ähnlich, aber der Unterschied liegt in ihrer Zugänglichkeit zu anderen Klassen oder Funktionen in der objektorientierten Programmierung.

Strukturen werden standardmäßig als öffentlich angegeben, während Klassen privat sind. Und bei der Vererbung können wir keine privat spezifizierten Klassen erben; Wir müssen eine Klasse manuell öffentlich deklarieren, während Strukturen standardmäßig öffentlich sind, sodass wir sie leicht erben können.

Was ist Vererbung in C++

Vererbung ist eines der Kernkonzepte der objektorientierten Programmierung, und der Grund dafür ist, dass sie die Wiederverwendbarkeit von Code und die Erstellung einer hierarchischen Klassifizierung verbessert.

Mit Hilfe der Vererbung können Sie eine allgemeine Klasse definieren, die einige Funktionen definiert, um einige grundlegende Operationen auszuführen, und diese auf andere Klassen erweitern, um diese Funktionen zu erben. Lassen Sie es uns anhand des Diagramms verstehen.

Vererbung in cpp

In diesem Beispiel haben wir Hund und Katze, und beide sind unterschiedliche Tiere, aber am Ende gehören beide zur Kategorie der Haustiere.

Beide haben einige gleiche Funktionen wie Essen, Schlafen und Gehen, die in der Klasse Haustier, auch Basisklasse genannt, gespeichert werden können, während für sie spezifische Merkmale wie Geräusch und Größe in der Klasse Hund und definiert werden können Klasse Cat, auch abgeleitete Klasse genannt.

Und diese Art der Vererbung wird als Einzelvererbung bezeichnet. Es gibt andere verschiedene Typen, die wir im Folgenden einzeln besprechen werden.

Codebeispiel:

#include <iostream>
using namespace std;

// Base class
struct Pet {
  void eat() { cout << "I can eat i am pet \n"; }
  void sleep() { cout << "I can sleep i am pet \n"; }
  void walk() { cout << "I can walk i am pet \n"; }
};
// Derived class
struct Cat : Pet {
  void sound() { cout << "I am a cat Meow Meow! \n"; }
};
// Derived class
struct Dog : Pet {
  void sound() { cout << "I am a dog Bark Bark! \n"; }
};

int main() {
  cout << "This is Cat's characteristics" << endl;

  Cat myCat;
  myCat.eat();
  myCat.sleep();
  myCat.walk();
  myCat.sound();

  cout << "\nThis is Dog's characteristics" << endl;

  Dog myDog;
  myDog.eat();
  myDog.sleep();
  myDog.walk();
  myDog.sound();
}

Ausgang:

This is Cat's characteristics
I can eat i am pet
I can sleep i am pet
I can walk i am pet
I am a cat Meow Meow!

This is Dog's characteristics
I can eat i am pet
I can sleep i am pet
I can walk i am pet
I am a dog Bark Bark!

In diesem Beispiel ist Haustier eine Basisklasse, wobei Katze und Hund abgeleitete Klassen sind. Pet hat einige gemeinsame Verhaltensweisen von Katzen und Hunden definiert, daher definieren wir sie nicht in jeder Klasse, um Coderedundanz zu vermeiden.

Hund und Katze erweitern diese gemeinsamen Verhaltensweisen und definieren ihr spezifisches Verhalten in ihren eigenen abgeleiteten Klassen.

Die Klassen Dog und Cat haben nur ein Verhalten, sound(), während das andere von der Basisklasse stammt. Und das Objekt dieser abgeleiteten Klassen verwendet die anderen Funktionen der Basisklasse.

Vererbungsarten in C++

C++ unterstützt verschiedene Arten der Vererbung, was eine offene Wahl für die Verwendung jeder nach dem Szenario bietet. Schauen wir uns jeden einzeln an.

  1. Einfache Vererbung
  2. Mehrfachvererbung
  3. Vererbung auf mehreren Ebenen
  4. Hierarchische Vererbung
  5. Hybride Vererbung

Einfache Vererbung

Bei der einfachen Vererbung haben wir eine Basisklasse und eine abgeleitete Klasse. Dieser Typ wurde bereits im ersten Beispiel erläutert.

Syntax:

class derivedClass_name : access_mode base_class {
  // body of the derived class
};

Mehrfachvererbung

Bei der Mehrfachvererbung können wir die Funktion und Eigenschaften von mehr als einer Basisklasse in eine einzige abgeleitete Klasse vererben.

Mehrfachvererbung

Syntax:

class derivedClass_name : access_mode base_class1,
                          access_mode base_class2,
                          ....{
  // body of the derived class
};

Vererbung auf mehreren Ebenen

Jede Art der Vererbung ermöglicht es Ihnen, von einer Basisklasse zu erben, aber die Vererbung auf mehreren Ebenen hat noch mehr zu bieten. Es ermöglicht Ihnen die Vererbung auf mehreren Ebenen, sodass Sie von der abgeleiteten Klasse an andere Unterklassen erben können.

Mehrstufige Vererbung

Tiere und Haustiere sind Basisklassen, und Katze ist die abgeleitete Klasse, die Funktionen und Eigenschaften von beiden Basisklassen erbt.

Hierarchische Vererbung

Bei der hierarchischen Vererbung werden mehr als eine Unterklasse von einer einzigen Basisklasse in einer Hierarchie geerbt. Außerdem wird mehr als eine abgeleitete Klasse aus einer einzigen Basisklasse erstellt.

Dies ist eine fortgeschrittene Art der Vererbung.

hierarchische Vererbung

Hybride Vererbung

Wie unter dem Namen hybride Vererbung bekannt, umfasst diese Art der Vererbung mehrere verschiedene Arten der Vererbung wie hierarchische und Mehrfachvererbung. Für die hybride Vererbung ist jede Kombination möglich.

Hybride Vererbung

In diesem Beispiel haben wir zwei verschiedene Arten der Vererbung, die einfache und die hierarchische Vererbung, die als hybride Vererbung durchgeführt werden.

Strukturvererbung in C++

In C++ ist ein struct ein Schlüsselwort, das verwendet wird, um eine Struktur zu definieren, die einer Klasse ähnlich ist, aber geringfügige Unterschiede aufweist. Der Hauptunterschied zwischen einer Struktur und einer Klasse besteht darin, dass die Mitglieder einer Struktur standardmäßig öffentlich sind, während die Klasse privat ist, was zu Sicherheitsbedenken führt.

Eine Struktur ist nicht sehr sicher, da die Funktionen und Eigenschaften den Endbenutzern nicht verborgen bleiben. Andererseits sind Klassen sicher, weil sie Programmierimplementierungen vor den Endbenutzern verbergen können.

Allgemeine Syntax von struct:

struct structureName {
  member1;
  member2;
  ..memberN;
};

Da die Vererbung ein Kernmerkmal der objektorientierten Programmierung ist, können auch Strukturen diese Funktion nutzen. Vererbung mit Struktur benötigt das Schlüsselwort struct anstelle von class.

Strukturvererbung in C++:

#include <iostream>
using namespace std;

// Base class
struct Pet {
  void eat() { cout << "I can eat i am pet \n"; }
};

struct Dog : Pet {
  void sound() { cout << "I am a dog Bark Bark! \n"; }
};

int main() {
  cout << "\nThis is Dog's characteristics" << endl;
  Dog myDog;
  myDog.eat();
  myDog.sound();
}

Ausgang:

This is Dog's characteristics
I can eat i am pet
I am a dog Bark Bark!

Wir haben das Wort struct vor dem Strukturnamen verwendet; Es sieht ähnlich aus wie Klassen, wenn Sie bemerkt haben, dass wir das Wort öffentlich im Körper der Struktur nicht verwendet haben, weil struct standardmäßig öffentlich ist.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - C++ Struct