Deklaration von Klasse?
-
Ist das ne Deklaration einer Klasse?:
class MyClass;
höchst wahrscheinlich schon... Kann ich, wenn ich vorher nur MyClass durch obige Deklaration bekannt mache schon MyClass Objekte anlgegen und dann auf die Methoden dieser Klasse zugreifen oder muss ich dazu die Deklaration wie folgt erweitern:
class MyClass { void doSomething(); };
-
Das:
class MyClass;
brauchst du, wenn du einem file die Klasse bekannt machen willst (siehe Cross-References).
-
Hmm, ich frage mich gerade, was wohl schneller geht ... sowas ins Forum zu Posten und die Antwort abzuwarten, oder sowas simples einfach mal auszuprobieren ...
-
Vertexwahn schrieb:
Ist das ne Deklaration einer Klasse?
Ja.
höchst wahrscheinlich schon... Kann ich, wenn ich vorher nur MyClass durch obige Deklaration bekannt mache schon MyClass Objekte anlgegen und dann auf die Methoden dieser Klasse zugreifen
Ohne sichtbare Definition kannst du nur Zeiger und Referenzen auf Objekte der Klasse deklarieren, sowie Funktionen deklarieren, die diese Klasse als Rückgabetyp haben.
-
C/C++ Forum :: FAQ - C++ :: Unterschied: Deklaration, Definition, Initialisierung
C/C++ Forum :: FAQ - C++ :: Vorteile von Klassen --> wo denn??
-
Hmm, ich frage mich gerade, was wohl schneller geht ... sowas ins Forum zu Posten und die Antwort abzuwarten, oder sowas simples einfach mal auszuprobieren
nicht alles was ein Compiler übersetzt ist auch (strikt) Standardkonform
-
Bashar schrieb:
Ohne sichtbare Definition kannst du nur Zeiger und Referenzen auf Objekte der Klasse deklarieren, sowie Funktionen deklarieren, die diese Klasse als Rückgabetyp haben.
...oder als Parameter erwarten.
Sprich:class Foo; Foo func(Foo f, Foo& r, Foo* q);
ist legales C++.
-
Hmmm...aber muss der Compiler beim ersten Parameter nicht wissen wie er die
Klasse kopieren kann? Muss er dafuer nicht auch wissen, wie die Klasse aussieht,
um eben dieses herauszufinden?Nicht das ich dir nicht glauben wuerde, aber o. Fragen sind mir grad mal schnell
in den Kopf geschossen :).mfg
v R
-
Er muss es erst beim Aufruf wissen, von daher ist das schon plausibel.
-
virtuell Realisticer schrieb:
Hmmm...aber muss der Compiler beim ersten Parameter nicht wissen wie er die
Klasse kopieren kann?Jup.
Muss er dafuer nicht auch wissen, wie die Klasse aussieht,
um eben dieses herauszufinden?Jup.
Aber jetzt stell dir mal die Frage *wann* der Compiler das wissen muss.
Genau. In dem Moment wo du die Funktion aufrufst.Und was muss passieren damit du die Funktion aufrufen kannst?
Du musst die entsprechenden Argumente übergeben.Und was musst du dazu machen?
Du musst ein Foo anlegen.Und was brauchst du zwingend dazu?
Die Definition von Foo.Schlussfolgerung: Alles im Grünen Bereich. In dem Moment wo jemand die Funktion aufrufen will, muss er ein Foo anlegen und um ein Foo anlegen zu können braucht er die Definition von Foo.
Also kann der Compiler die Deklaration der Funktion problemlos zulassen.
-
Vertexwahn schrieb:
Hmm, ich frage mich gerade, was wohl schneller geht ... sowas ins Forum zu Posten und die Antwort abzuwarten, oder sowas simples einfach mal auszuprobieren
nicht alles was ein Compiler übersetzt ist auch (strikt) Standardkonform
Ok, da is was dran.