Objekt einer Klasse?
-
Und nicht nur so:
class TuWas{ private: //Variablen public: int tuDies(){ //tuDies.. return blabla; } int tuDas{ //tuDas... return blabla; } }
int main(void){ TuWas BauHaus; BauHaus.tuDies(); BauHaus.tuDas(); }
-
Mit
TuWas().irgendwas();
machst Du folgenes:
Du stellst ein Zelt auf, feierst Deine Party und räumst danach das Zelt wieder weg.
TuWas() erzeugt ein unbenanntes Objekt das solange lebt wie irgendwas() läuft.
Der Compiler könnte (!) das intern so handeln:
{ TuWas temp; temp.irgendwas(); } // zerstöre TuWas() nach getaner Arbeit
-
Aha, das heist ich mache
class Blabla{ //..... int irgendwas(){ //... } };
Blabla TuWas; TuWas().irgendwas();
TuWas kann ich dann so nutzen wie Blabla, wo ist der unterschied?
Wird Blabla nach getaner Arbeit von irgendwas nicht zerstört?cu max
-
Welches Buch benutzt du denn?
-
Empfehlung zum Experimenteiren:
class Bauplan { Bauplan(const std::string & name){cout<<"Bauplan gelesen und Häulse gebaut für"<<name;} ~Bauplan(){cout<<"Häusle abgerissen, wollte keiner mehr haben";} void bewohnen(){cout<<"Das Haus wird genutzt";} };
int main() { Bauplan myHouse("myHouse"); myHous.bewohnen(); Bauplan("temporär").bewohnen(); { Bauplan myHouse2("kurzebriges Häusle"); myHous.bewohnen(); } }
Das Beispiel hakt ein wenig, aber den Haken decken wir erst auf wenn das Häulsebauen klappt
Wird Blabla nach getaner Arbeit von irgendwas nicht zerstört?
Richtig. Blabla wird erst zerstört wenn es den Sichtbarkeitsbereich verlässt.
{ Blabla blubber; } // hier wird Blabla blubber zerstört
-
CarstenJ schrieb:
Welches Buch benutzt du denn?
C++ Lernen und Proffesionell anwenden von Ulla Prinz.
Knuddelbaer schrieb:
Empfehlung zum Experimenteiren:
.....Danke werds mal ausprobieren.
cu max
-
Ich habe mir das selbe Buch gekauft und bin gerade bei der Polymorphie (Kapitel 24).
Ich finde, dass die Erklärung über die OOP im Buch sehr kurz geraten ist.
Doch nach meiner Meinung ist das ganze Buch wirklich gelungen. es werden die meisten Themen beschrieben, die C++ bietet.
Mit Hilfe eines anderen Buches, in dem genau das selbe Beispiel wie das von Knuddlbaer beschrieben wurde :D, habe ich das Prinzip dann doch verstanden.
Das Internet hat mir auch sehr viel geholfen, falls ich nicht mehr weiterwusste.
-
Ich denke es jetzt auch zu verstehen, die Skizze auf Seite 264 sagt eigentlich alles. Nocheinmal vielen dank an alle.
cu max
-
ChrissiB schrieb:
Mit Hilfe eines anderen Buches, in dem genau das selbe Beispiel wie das von Knuddlbaer beschrieben wurde :D,
Hei, ich hab das Buch aber nich geschrieben
(kenns nich ma)
-
Knuddlbaer schrieb:
Hei, ich hab das Buch aber nich geschrieben
(kenns nich ma)
Ich kenn das Beispiel aus dem Buch "C++ Objektorientierte Programmierung" von A. Niemann und S. Heitsiek.
Ist nur für Einsteiger geeignet. Doch der Objektorientierte Ansatz finde ich gut erklärt von den 2 Autoren.
-
Ich hätte da gerade noch eine Frage:
Ich habe eine Klasse PKW (Seite 264)class Pkw{ private: int Baujahr; int FahrgestellNr; int Leistung; //...... public: void fahren(); void bremsen(); //...... }
Dann erzeuge ich zwei Objekte:
Pkw auto1,auto2;
auto1(Fiat Punto):
Baujahr=1990; Leistung=100; FahrgestellNr=111111; //Methoden.....
auto2(Nissan...):[cpp] Baujahr=2000; Leistung=200; FahrgestellNR=222222; //Methoden
Wenn ich jetzt dem Wert Baujahr aus dem Objekt auto1 1990 zuweise, gilt dieser Wert nur für auto1, also kann ich auto2 bei Baujahr etwas völlig anderes zuweisen und es wird nicht überschrieben?
vielen dank im voraus.
cu max
-
Ich habe das Selbe Buch genommen und habe keinerlei Probleme beim Verständnis.
Es geht aber auch darum, dass das kein Anfängerbuch ist, es ist jedenfalls nicht an die gerichtet, die noch nie eine Programmiersprache in der Hand hatten.MfG MAV
-
Ja, das Objekt "auto1" wird nicht überschrieben.
-
Hi,
ich habe schon ein Jahr Basic hinter mir, bin in C++ recht neu und muss mich halt bei dem Buch durchbeissen, wird schon hinhauen. Bis jetzt hatte ich aber mit dem Buch noch keine Schlimmen Probleme.//Referenzen und Pointer waren aber anstrengendcu max
-
Ja, das Objekt "auto1" wird nicht überschrieben
Ich wollte Fragen ob die Variable Baujahr vom Objekt auto1 vom objekt auto2 überschrieben wird. Wäre aber unlogisch.
cu max
-
Nein, genau darum geht es ja. Stell dir einfach vor, du hast wirklich 2 Autos vor dir stehen. Beide nach dem selben Bauplan (Klasse). Jedes hat dann auch unterschiedliche Eigenschaften, Farbe, Baujahr, Sitzbezüge etc.
-
Du meinst, wenn du vom Objekt 1 die Variable Baujahr mit 10 definierst und beim Objekt 2 dieselbe Variable (Baujahr) mit z.b. dem Wert 5 definiert,
ob dann bei dem Objekt 1 die Variable Baujahr den Wert 5 hat?
-> Nein, den Wert von der Variable Baujahr vom Objekt 1 wird durch das Objekt 2 nicht überschrieben.@Master_Max Ich kann dir das Buch "Das Übungsbuch" von den selben beiden Autoren empfehlen. Mit diesenm Buch kannst du schauen, ob du ein Thema verstanden hast oder nicht. Ich habe es zu Weihnachten bekommen. :xmas1:
-
Bauplan ist aber auch so... naja, am Ende hätte man ja die gleichen Häuser raus.
Also ich würde es so erklären:
Deine Klasse heißt Haus, das ist jetzt aber nur die Vorlage für dein Haus.
Wenn du jetzt sagst: Haus h1(...), h2(...) baust du 2 unterschiedliche Häuser.
Wenn du in h1 nachträglich jetzt noch ein Fenster einbaust, dann wird es ja beim zweiten Haus nicht automatisch auch hinzugefügt.
-
Jo, ich glaube spätestens jetzt sollte das klar sein.
Allerdings würde mich mal die entsprechende Erklärung aus dem Buch interessieren....
-
Aus Buch:
Klassen sind das wesentliche Sprachelement in C++ zur Unterstützung der objektorientierte Programmierung (OOP).
Eine Klasse legt die Eigenschaften und Fähigkeiten von Objekten fest.Das sind aber nur die ersten 2 Einleitungssätze.
Danach geht es mit Datenabstratkion, Datenkapslung und Definition einer Klasse weiter.
Beim ersten Durchlesen wird man wahrscheinlich noch nicht so ganz viel verstehen.
Man sollte sich deshalb dransetzen und es weitere Male lesen, bis man es verstanden hat.(leicher gesagt als getan)