Zum Inhalt springen

Strukturen und Klassen in C++


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich hätte zu der folgenden Aufgabe einige Fragen und hoffe das mir jemand helfen kann.

Aufgabe:

Es soll folgendes ausgegeben werden. Allerdings soll die main() nicht verändert werden:

Initialisierung

Hello World

Ende


void main()

{

cout << "Hello World\n";

}

Die Lösung sieht wie folgt aus:

struct GlobalBracket

{

GlobalBracket() {cout <<"Initialisierung\n";}

~GlobalBracket() {cout <<"Ende\n";}

} global_bracket_variable;

Ich denke ich bin zwar auf der richtigen Spur, aber mir fehlt noch der entscheidende Hinweiß. Bei GlobalBracket() bzw. ~GlobalBracket() müßte es sich doch (laut der Schreibweise) um Konstruktoren/Destruktoren handeln, oder?

Allerdings kenne ich diese Befehle eigentlich nur bei Klassen und nicht bei Strukturen.

Ich hoffe ich habe mich nicht zu umständlich ausgedrückt.

Im voraus schon einmal vielen Dank.

Geschrieben
Bei GlobalBracket() bzw. ~GlobalBracket() müßte es sich doch (laut der Schreibweise) um Konstruktoren/Destruktoren handeln, oder?
Richtig.

Allerdings kenne ich diese Befehle eigentlich nur bei Klassen und nicht bei Strukturen.
Der Unterschied zwischen class und struct ist in C++ sehr gering. Bei struct ist der Default-Zugriffsspezifizierer für Member und Vererbung public, bei class private, das ist schon alles. Strukturen in C++ können vererbt werden, Operatoren und virtuelle Methoden haben usw.
Geschrieben

Vielen Dank für die wirklich seeeehr schnelle Antwort.

Jetzt ist es mir schon um einiges klarer.

Allerdings eine Frage hätte ich noch. Den Begriff GlobalBracket kann ich den gleichsetzen mit dem Zeichen "{"?

Was ich damit sagen will ist, ob es sich dabei automatisch um die beiden "äußersten" Klammern handelt? Also die Klammern die meine main() bilden?

Geschrieben

Nein, der Name dieser Struktur ist willkürlich, die könnte auch Kaesekuchen oder Boersencrash heißen. Gleiches gilt für den Namen der Instanz (global_bracket_variable).

Entscheidend ist, dass eine globale Instanz der Klasse erstellt wird, denn die wird vor main erzeugt, und danach zerstört. Welche Namen die Struktur und die Instanz haben, ist völlig egal.

Geschrieben

Ich hab Strukturen immer nur in Verbindung mit Variablen und nicht mit Funktionen verwendet und ich glaube es ist auch kein guter Stil, wenn man die wie Klassen verwendet oder bin ich da auf dem Holzweg?

Geschrieben
Ich meine mich zu entsinnen, dass im Linuxkernel auch Strukturen mit Funktionspointern verwendet werden.

Funktionspointer sind Membervariablen (nämlich erstmal nur Pointer, egal auf was) in der Struktur oder Klasse.

Dabei kommt mir folgende Frage: Der Linux Kernel ist doch in C geschrieben. Kann man denn in C auch schon Methoden in structs einbauen? Also wirklich C, so ganz ohne ++?

Ich hab Strukturen immer nur in Verbindung mit Variablen und nicht mit Funktionen verwendet ...

Hier sind korrekter ausgedrückt wohl eher Methoden als Funktionen gemeint (eine Funktion hat keine Klasse zu der sie gehört).

Ob das dann guter Stil ist, ist wohl wirklich Geschmackssache. Ich verwende es eigentlich selten bis gar nicht.

Geschrieben
Funktionspointer sind Membervariablen (nämlich erstmal nur Pointer, egal auf was) in der Struktur oder Klasse.

Dabei kommt mir folgende Frage: Der Linux Kernel ist doch in C geschrieben. Kann man denn in C auch schon Methoden in structs einbauen? Also wirklich C, so ganz ohne ++?

Natürlich geht das. Ich schreib meine Treiber auch in (reinem) C und benutze Funktionspointer in Strukturen.

Geschrieben

Ich seh da schon parallelen. Einmal verwaltet die Sprache per vtable Methodenzeiger, die ich dann mit syntaktischem Zucker aufrufen kann, das andere mal nehme ich die Verwaltung selber in die Hand.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...