Hi,
könnt Ihr mir bitte erklären
wozu und wann ich :
1.)
Zeiger- und Adress Klassen benötige.
2.)
eine mit new erstellte Klasse brauche
3.)
wie und wann ich in der Parameterliste von Methoden mit Klassen umgehe
Ich meine ich weiß ja was ein Zeiger und die Adresse ist, doch warum benötige ich diese und
in der Parameterliste wird mal ein Zeigerobjekt, mal die Adresse angegeben.
Bin Euch wirklich vielmals dankbar für eine Erklärung , damit ich endlich dort durchsehe und auch endlich mal mit dem Probrogrammieren weiterkomme!
vielen Dank
C++ Klassen
Re: C++ Klassen
Hi,
Ich kann leider kein komplettes Buch schreiben, die Fragen sind
ziemlich allgemein und grundlegend, aber vielleicht helfen Dir die
Antworden schon.
Zeiger sind Zeiger sind Zeiger. sie können z.B. auf einen int zeigen oder auf
eine Klasse zeigen.
(es ist ein wichtiger Unterschied)
mit
erzeugt man ein Objekt der Klasse "CKlasse" welches nicht durch
den Runtime umgebung wieder freigegeben wird.
Du mußt selber es mit z.B.
wieder freigeben.
a) Zeiger auf Klassen stehen
b) Referenzen auf Klassen und
c) Klassen
d) einfache typen (int double,...)stehen.
wobei a) und b) (fast) äquivalent sind (ungefähr = Call by Reference), und bei c) das Objekt
Kopiert werden muss (Call by Value) und veränderungen nicht zurückkommen
Kopieren von Objekte braucht (bei großen Objekten) immer viel Zeit!
Ich will nicht überheblich klingen, aber Du scheinst sehr am Anfang deiner
Programmierlaufbahn sein, also solltest Du auch mal deinen Freund Google
nach
"Objektorientierte Programmierung"
"c++ Einführung"
befragen.
Oder du fragst IHN selbst, denn ER hat C++ erfunden:
Bjarne Stroustrup: "Die C++ Programmiersprache"
als Buch in jeder Bücherei / Buchladen zu finden.
HTH
Johannes
Ich kann leider kein komplettes Buch schreiben, die Fragen sind
ziemlich allgemein und grundlegend, aber vielleicht helfen Dir die
Antworden schon.
was sind Zeigerklassen und was sind Addressklassen?rdg hat geschrieben:Hi,
könnt Ihr mir bitte erklären
wozu und wann ich :
1.)
Zeiger- und Adress Klassen benötige.
Zeiger sind Zeiger sind Zeiger. sie können z.B. auf einen int zeigen oder auf
eine Klasse zeigen.
Code: Alles auswählen
int * a;
CKlasse * b;
mit new erstellt man keine Klassen man erzeugt ein Objekt der Klasse xyz.2.)
eine mit new erstellte Klasse brauche
(es ist ein wichtiger Unterschied)
mit
Code: Alles auswählen
b = new CKlasse();
den Runtime umgebung wieder freigegeben wird.
Du mußt selber es mit z.B.
Code: Alles auswählen
delete b;
in einer Parameterlist können3.)
wie und wann ich in der Parameterliste von Methoden mit Klassen umgehe
a) Zeiger auf Klassen stehen
b) Referenzen auf Klassen und
c) Klassen
d) einfache typen (int double,...)stehen.
wobei a) und b) (fast) äquivalent sind (ungefähr = Call by Reference), und bei c) das Objekt
Kopiert werden muss (Call by Value) und veränderungen nicht zurückkommen
das ist z.T. Geschmacks- oder Geschwindigkeitsgründe.Ich meine ich weiß ja was ein Zeiger und die Adresse ist, doch warum benötige ich diese und
in der Parameterliste wird mal ein Zeigerobjekt, mal die Adresse angegeben.
Kopieren von Objekte braucht (bei großen Objekten) immer viel Zeit!
Bin Euch wirklich vielmals dankbar für eine Erklärung , damit ich endlich dort durchsehe und auch endlich mal mit dem Probrogrammieren weiterkomme!
vielen Dank
Ich will nicht überheblich klingen, aber Du scheinst sehr am Anfang deiner
Programmierlaufbahn sein, also solltest Du auch mal deinen Freund Google
nach
"Objektorientierte Programmierung"
"c++ Einführung"
befragen.
Oder du fragst IHN selbst, denn ER hat C++ erfunden:
Bjarne Stroustrup: "Die C++ Programmiersprache"
als Buch in jeder Bücherei / Buchladen zu finden.
HTH
Johannes
Ja,
doch wozu benötige ich z.B. eine Zeiger Klasse, bei einer char Variable versehe ich es ja, da man diese über einen Zeiger ändern kann, doch wozu bei Klassen?
Stimmt natürlich ein Objekt wird mit new erstellt, doch weshalb sollte ich eine Objekt mit new erzeugen, was habe ich davon?
Ich habe 4 Bücher über C++ und OOP doch finde ich in Ihnen nicht die Antwort darauf, sondern nur das und wie man es kann.
doch wozu benötige ich z.B. eine Zeiger Klasse, bei einer char Variable versehe ich es ja, da man diese über einen Zeiger ändern kann, doch wozu bei Klassen?
Stimmt natürlich ein Objekt wird mit new erstellt, doch weshalb sollte ich eine Objekt mit new erzeugen, was habe ich davon?
Ich habe 4 Bücher über C++ und OOP doch finde ich in Ihnen nicht die Antwort darauf, sondern nur das und wie man es kann.
Ok, ein fiktives Beispiel:rdg hat geschrieben:Ja,
doch wozu benötige ich z.B. eine Zeiger Klasse, bei einer char Variable versehe ich es ja, da man diese über einen Zeiger ändern kann, doch wozu bei Klassen?
eine Menge von Menschen soll modelliert werden
ein Mensch wohnt in einer Stadt.
also kann man folgende Lösung erstellen:
Code: Alles auswählen
Klasse Mensch : Name, Vorname, Geschlecht, Alter, Tel , Stadt
Klasse Stadt : Name, Bezirk , Einwohner, Fläche, Geo-Koordinaten,...
Typ Mensch zu halten, es ändert sich z.B. die Einwohnerzahl, dann musst
du alle Objekte deiner Stadt finden und überall die Einwohner ändern.
in diesem Fall _kann_ man jedem Menschen einen Zeiger auf Stadt geben.
- jeder Mensch "kennt" seine Stadt"
- die Stadt als Objekt ist eine Identität
- weniger Speicherverbrauch
- hohe geschwindigkeit im zugriff von Mensch auf Stadt.
z.B. kannst du in einer Schleife aus der Datenbank die Städte einlesen objekte erstellenStimmt natürlich ein Objekt wird mit new erstellt, doch weshalb sollte ich eine Objekt mit new erzeugen, was habe ich davon?
und in eine Liste anhängen (welche du am ende des Programms natürlich löschen must)
Ohne Verwenden von new und Ptrlisten ginge das auch, aber IMHO muss mindestens
ein oder mehrmals ein Objekt kopiert werden.
Dann schlag mal im OO-Buch über identität von Objekten nach. Jedes Semantische Objkt (eine Stadt)
Ich habe 4 Bücher über C++ und OOP doch finde ich in Ihnen nicht die Antwort darauf, sondern nur das und wie man es kann.
darf nur 1 mal im Speicher existieren, alles andere gibt (meist) Probleme.
gruß
Johannes
PS:
Das Beispiel ist nur zur erklärung, im speziellen Fall würden 12 von 10 Programmieren das
anders implementieren