Zum Inhalt springen

Strukturen und Klassen in C++


Gkar

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...