Klassenobjekte.
-
Aber auf der Seite 1 wurde es mir so gezeigt!?
-
Also ich muss C B::c_obj2; einfügen weil C c_obj2; ein statisches Element wurde oder wie sieht es jetzt aus. Ich bin ganz durcheinander jetzt und verstehe gar nichts mehr.
-
Delikanli schrieb:
Also ich muss C B::c_obj2; einfügen weil C c_obj2; ein statisches Element wurde oder wie sieht es jetzt aus.
So ist es. Wenn in einer Klassendeklaration ein statisches Element steht, ist das erst mal nur eine Deklaration. Das Element muss auch noch irgendwo definiert werden.
-
Delikanli schrieb:
Aber auf der Seite 1 wurde es mir so gezeigt!?
Wenn du damit das void main() meinst. Das zeigt dir hier keiner.

-
Nein meine ich nicht. ich meine dass C c_obj2; ohne Definition!
-
Da wars nicht statisch.
-
Wieso kann ich den auf die Klasse C in der Klasse B zugreifen obwohl keine Vererbung besteht. Und das statische Element in unserem Fall habe ich immer noch nicht verstanden.
-
Delikanli schrieb:
Wieso kann ich den auf die Klasse C in der Klasse B zugreifen obwohl keine Vererbung besteht.
Wie kommst du darauf, dass dazu Vererbung notwendig wäre? Auf public-Elemente kann von überall zugegriffen werden.
Und das statische Element in unserem Fall habe ich immer noch nicht verstanden.
Was genau hast du nicht verstanden?
-
Und noch was. Wenn ich die Definition vor main einfüge bekomme ich bei so eine Ausgabe:
C::StandardkonstruktorStart main()
A::Standardkonstruktor
B::Standardkonstruktor
B::Destruktor
A::Destruktor
Ende main()
Press any key to continueDer Destruktor von C taucht nicht auf.
-
Statische Element: Man kann dieses Element in Main nicht mehr verändern. Oder?
Nur Außerhalb von main kann man ein statisches Element einer Klasse verändern.
Ich verstehe den Sinn nicht so ganz, warum mann statische Elemente verwendet. Gibt es auch statische Elemente im main?
-
Ich bitte dich inständig, lies dir das durch:
http://tutorial.schornboeck.net/oop.htm
http://tutorial.schornboeck.net/staticmember.htm
http://tutorial.schornboeck.net/vererbung.htm
http://tutorial.schornboeck.net/virtual.htm
-
Delikanli schrieb:
Statische Element: Man kann dieses Element in Main nicht mehr verändern. Oder?
Nein. "Statisch" bezieht sich auf die Lebensdauer, nicht auf die Veränderbarkeit. Für letzeres gibt es const.
Nur Außerhalb von main kann man ein statisches Element einer Klasse verändern.
Nein. Siehe oben.
Ansonsten kann ich GPC nur zustimmen. Alle deine Fragen werden in einem Tutorial beantwortet.
-
Ok ich habe jetzt alles durchgelesen über static und virtual und habe es verstanden jetzt.
Muss ich den bei der Definition von C B::obj2; noch etwas ändern oder hinzufügen damit der Destruktor von C auch aufgerufen wird. Als Ausgabe bekomme ich:C::Standardkonstruktor Start main() A::Standardkonstruktor B::Standardkonstruktor B::Destruktor A::Destruktor Ende main() Press any key to continue
-
Würde mir da keine besonderen Gedanken drüber machen. Wahrscheinlich gibts cout nicht mehr wenn dein ~C() aufgerufen wird.
BTW bei mir ists denau umgekehrt ( g++ 3.3.5 ) ich sehe den Konstruktor- aufruf nicht.
Sehe beide wenn ich B::c_obj2 initialisiereC B::c_obj2 = C();Kurt