Guten Abend meine herren und damen =)
was ich fragen wollte ist ob ich bei vererbung die unterklassen die selben funktionen wie die hauptklasse haben muss oder kann ich andere klassen hinzufügen und löschen ????
kingbozz Gast |
kingbozz Gast |
Guten Abend meine herren und damen =)
was ich fragen wollte ist ob ich bei vererbung die unterklassen die selben funktionen wie die hauptklasse haben muss oder kann ich andere klassen hinzufügen und löschen ????
Nabend |
Wenn eine Klasse von einer anderen erbt, dann erbt sie auch deren Funktionen (besser: Methoden).
Was meinst du jetzt mit "Klassen hinzufügen und löschen"?
Aus 2 mach eine geht schlecht. Stell' dir eine Klasse vor wie einen Datentyp (was sie ja auch ist), nur komplexer. Eine Variable hat immer einen eindeutigen Typ. Sie wird niemals double und string gleichzeitig sein
greez
JoSsiF
ne chef das meinte ich nicht...
guck mom
\\hauptklasse
class auto
{
auto();
~auto(){};
rechnung(){};
zeiger ();
};
\\unterklasse
class audi
{
audi();
~audi(){};
muss ich jetzt rechnung () oder rechnungaudi() ?
};
joa halt ob ich die funktion wie oben nennen kann oder muss sie anders sein ?
und noch eine frage ist was kommt immer vor den funnkionen hin audi und in die klammern ???
mein lehrer meine irgendwas mit rückgabe wert und so.-
ne chef das meinte ich nicht...Dann sag, was du meinst!
das ist c++ :-)
ja diese tilde ist für den desktruktor...
class audi : public auto
{
...
}
okay und noch ne frage was schreibe ich vor den einzelnen funktionen hin ??? und in die klammern ???
zb.:
class auto
{
auto()
~auto(){}
xx tanken (xx)
wann schreibe ich da was in die xx rein (ich weiß was int,char,double oder so ist) nur ich weiß nicht ob ich da was schreiebn soll wenn ja wieso ?
und aller aller letzte frage ???
ich schreieb zwar immer ein dektruktor hin aber was habe ich durch den destruktor ???
prinzipiell unterscheidest Du da zwischen Funktionen und Prozeduren (obwohl letzteres von einigen Menschen gemieden wird).
Wenn Du int, char, long, double oder dergleichen davor schreibst sagst Du, daß Du eine Funktion schreibst, die also einen WErt von diesem Typ zurück liefert.
Bsp.:
int meineFunktion() {
...
return Integerzahl;
}
d.h. Du gibst über Den Funktionsnamen einen Wert zurück und kannst dann irgendwo anders schreiben:
int a = meineFunktion();
Willst Du keinen Wert über den Funktionsnamen zurück geben, also nur eine Prozedur schreiben, dann nimmst Du void. Viele sind jedoch der Meinung, Du solltest auch bei Prozeduren Werte zurück geben, und wenn es nur ein Fehlercode ist. Es kann ja in der Prozedur irgendwas schief laufen, und dann ist es immer klug von aussen zu wissen, was da falsch gelaufen ist.
Zur Frage "Destruktor" kann ich nur folgendes sagen:
Was macht denn ein Konstruktor? Der soll i.d.R. die benötigten Variablen und Speicherbereiche für die Klasse reservieren und ggf. vorinitialisieren. D.h. Wenn Du die Klasse irgendwo genutzt hast, sind die Variablen alle deklariert und haben genormte Werte.
Ein Destruktor macht nun genau das Gegenteil. I.d.R. ist auch er nur dazu da, reservierten Speicherbereich von Variablen wieder freizugeben, damit nicht noch irgend welche Variablen-Leichen im Speicher umlungern. Ein Destruktor ist daher nur so eine Art "Aufräum-Methode", die jeglichen genutzen Speicher wieder frei geben soll und (wenn der Programmierer das auch noch wünscht) vorhergegangene Änderungen ggf. wieder rückgängig zu machen.
Ein Beispiel dafür: Ein Freund hat mal in DOS ein Tetris Spiel programmiert, hatte jedoch nur 16 Farben zur Verfügung. Da die ihm aber nicht gefallen haben, hat er einfach die Farbtabelle der Grafikkarte neu geschrieben. Beim ersten mal starten hat das auch prima funktioniert, doch als er das Programm beendet hatte, waren alle Farben verstellt. Schwarz war nicht mehr schwarz, blau nicht mehr blau, usw. Daher hatte er sich nen Destruktor gebaut, der beim Beenden des Programmes aufgerufen wurde, alle Variablen deinitialisierte und die Farbtabelle wieder auf ihre normalen Werte zurück stellte :-)
Hoffe ich konnte damit helfen
Gruß Maddin
Ja, also um das ma in einfache Worte zu packen:
Vor den Funktionsnamen kommt der Rückgabetyp (das, was rauskommt), und in Klammern die Parameter (das, was reingeht).
Ob du Parameter brauchst, musst du selber entscheiden. Wenn du beispielsweise eine Additionsfunktion programmierst, wäre es also sinnvoll, zwei Summanden als Parameter zu übergeben und die Summe zurückzugeben. Klar?
greez
JoSsiF
« Spiel Programmieren!!! | Fachliteratur für C++ und VBA » | ||