Modulo
-
Mihyaeru schrieb:
In den beispiel würde es mich interessieren wo da die fehler sind. Denn beim ausführen hat das funktioniert, ohne das mir fehler oder warnungen angezeigt wurden von visual studio 2012.
Das Programm ist technisch richtig, die Erklärungen in dem Beispiel sind bloß vollkommen falsch. Zeile 5 ist eine Definition (und genau genommen auch eine Deklaration). Zeile 7 ist keines von beidem. Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde
). Das ist kein Flüchtigkeitsfehler, der Mensch hat die Bedeutung der Begriffe schlicht und einfach nicht verstanden.
Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?
Guck in meine Signatur oder die als wichtig markierten Threads!
-
Mihyaeru schrieb:
Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?
Die üblichen Empfelungen sind
C++-Primer, 5th Edition
Die C++-Programmiersprache, 4. Auflage (gibt's ne aktuellere deutsche Übersetzung?)
Der C++-Programmierer
C++: Das komplette Starterkit für den einfachen Einstieg in die Programmierung (Louis hat doch auch ned viel falsch gmacht, oder?)
-
Könnt ihr mir denn ein Buch empfehlen, um c++ zu lernen?
Weil es ist natürlich in mein eigenen interesse c++ von anfang an richtig zu lernen und nicht erst zu lernen und hinterher festzustellen, dass das buch fehler enthielt. Wie es halt jetzt passiert ist, nur das ich mit den lernen noch nicht allzu weit war.
-
Okay, da mein englisch nicht so das beste ist würde ich dann eher eins von den beiden nehmen:
Der C++-Programmierer
C++: Das komplette Starterkit für den einfachen Einstieg in die ProgrammierungKennst du eins dieser beiden Bücher? Oder sind sich die beiden Bücher recht ähnlich, so das es im prinzip egal ist welches der beiden nimmt?
-
Nein, kann ich leider nicht. Ein Buch vom Breymann hab' ich mal gelesen, das war aber 200x.
//@SeppJ: Und eins mit zwei Sprachen im Namen. Ich hab's irgendwann einem unliebsamen Menschen "nachgeworfen"
-
Dann bedanke ich mich an dieser Stelle für eure Hilfe und Hinweise.
Hat mich davor bewahrt C++ falsch zu lernen.
-
Swordfish schrieb:
//@SeppJ: Und eins mit zwei Sprachen im Namen. Ich hab's irgendwann einem unliebsamen Menschen "nachgeworfen"
So habe ich auch mit C/C++ angefangen
. Ich weiß nicht mehr, welcher Autor oder Verlag, außer dass das Buch gelb war. Aber es war eben das Buch zum Thema im Handapparat. Und natürlich hatte jemand die STL-Referenz im letzten Kapitel heraus gerissen, so dass diese mir monatelang unbekannt war. Ich hoffe, ich hab's so langsam überwunden. Ein Glück ist es auf Grund eines Fehlers in der Forensoftware nicht so ganz einfach, meine ersten Beiträge hier aufzuspüren :p .
-
SeppJ schrieb:
Ich weiß nicht mehr, welcher Autor oder Verlag, außer dass das Buch gelb war. Aber es war eben das Buch zum Thema im Handapparat. Und natürlich hatte jemand die STL-Referenz im letzten Kapitel heraus gerissen, so dass diese mir monatelang unbekannt war.
Jep. Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt
-
Swordfish schrieb:
Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt
Als das aktuell war, war das Top. Quasi das CLang der damaligen Zeit
-
SeppJ schrieb:
Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde
).
Nicht unbedingt.
-
Ihr habt ja gesagt das im den gezeigten Code das erste keine deklaration und das zweite keine Definition ist.
Und da ich mir natürlich auch im internet verschiedene Tutorials angesehen habe und dort zwei verschiedene Varianten von Deklaration und definition auftauchen (einmal die Variante wie hier gezeigt und einmal umgekehrt).
Könnt ihr mir deshalb auf einfache und verständliche art und weise erklären was der unterschied zwischen den beiden sachen ist?
-
^Ohne Anspruch auf Tiefgang und Vollständigkeit^
Deklaration = reine Bekanntmachung eines Bezeichners = Schau Compiler, mich gibts. Ich hab gewisse Charakteristika, aber ich bins nicht wirklich. Gehört solltest von mir aber jetzt gehabt haben.Jede Deklaration ist gleichzeitig eine Definition außer wenns
extern
deklariert ist = ich bin in einer anderen Übersetzungseinheit
- eine Funktion ohne Body ist
- eineclass
- oderstruct
-deklaration ist.
- einstatic
Member einer Klasse ist.
- ...
Vielleicht helfen Beispiele. Man bekommt mit der Zeit ein Gefühl dafür:
foo.h
#ifndef FOO_H_INCLUDED #define FOO_H_INCLUDED extern int i; // Deklaration -> mich gibts. wo? frag den Linker. int foo( int, int ); // Deklaration -> aufrufen ohne Definition is nicht. class bar; // Deklaration -> Instanziieren ist nicht. Groesze unbekannt. // Pointer darauf = ok weil Groesze dafuer egal. #endif /* FOO_H_INCLUDED */
foo.cpp
#include "foo.h" int i = 42; // Deklaration, Definition und Initialisierung in einem int foo( int f, int f ) { return f * f; } class bar { friend void baz(); // deklariert eine Funktion als friend static int data; // deklariert data als static Member; }; int bar::data = 47; // definiert und initialisiert
main.cpp
#include "foo.h" int main() { i = 666; // remember? das extern Dingens das eigentlich in bar.cpp lebt? int k; // Deklaration und Definition in einem - ja, ich leb' hier. }
-
Swordfish schrieb:
Jede Deklaration ist gleichzeitig eine Definition außer wenns
extern
deklariert ist = ich bin in einer anderen Übersetzungseinheit
- eine Funktion ohne Body ist
- eineclass
- oderstruct
-deklaration ist.
- einstatic
Member einer Klasse ist.
- ...
Vielleicht wär's besser, wenn du es umgekehrt beschreiben würdest. Denn jede Definition ist eine Deklaration, ohne Ausnahmen. Gerade zählst du bloß allerlei Möglichkeiten auf, Deklarationen zu machen.
-
Er hat halt das wording des Standards direkt übernommen.
-
... und ohne Beispiele und irgendwann kapieren was gemeint ist Blickt mans eh ned.
-
SeppJ schrieb:
Dank dem Internet verbreitet sich das sogar recht flott.
dank dem internet ist es auch mit dem genitiv nicht mehr weit her
-
genitiv_ins_wasser schrieb:
dank dem internet ist es auch mit dem genitiv nicht mehr weit her
Du spielst auf "dank dem" an? Da gehört ursprünglich ein Dativ hin ("wem dankt man?"), der Genitiv ist die neuere Entwicklung.
-
Wie fliegt denn ein Flugzeug? Ich dachte wirklich immer es wäre wegen dem Auftrieb durch den höheren Druck an der Unterseite des Flügels :s
-
hardware schrieb:
Wie fliegt denn ein Flugzeug? Ich dachte wirklich immer es wäre wegen dem Auftrieb durch den höheren Druck an der Unterseite des Flügels :s
Wenn du es in der Sprache von Druckunterschieden ausdrücken möchtest, dann stimmt das natürlich auch*. Die Frage ist, wie der Druckunterschied zustande kommt. Die übliche Erklärung, dass die Luft oben rum einen längeren Weg zurück legen müsse, ist leicht als Unsinn zu erkennen: Woher soll die Luft oben wissen, was die Luft unten macht+? Dieses einfache Bild mit inkompressiblen, reibungslosen Medien ist sowieso gänzlich ungeeignet; man kann sogar zeigen, dass ein 3D-Körper überhaupt niemals (dynamischen) Auftrieb unter diesen Bedingungen erfahren kann.
Die genaue Erklärung ist letztlich komplex, ich verweise da auf den verlinkten Wikipediaartikel. Die allereinfachste Erklärung, die man noch gelten lassen kann, ist, dass das wichtigste am Flügel nicht die Form ist, sondern der Winkel zur Flugrichtung. Wenn er unter diesem schnell durch die Luft gezogen wird, dann treffen, wie man sich recht intuitiv vorstellen kann, einfach mehr und schnellere Luftteilchen auf die Unterseite als auf die Oberseite.*: Letztlich müssen eben einfach mehr Luftteilchen von unten gegen den Flügel donnern als von oben. Ob man das Druckunterschied, Rotationserhaltung oder sonst wie nennt, ist nur eine Frage der Sichtweise.
+: Und vieles mehr: Wie fliegt ein Papierflugzeug oder andere FLugzeuge mit symmetrischen Flügeln? Wieso können Flugzeuge auf dem Rücken fliegen?
-
Wie funktioniert der Heisenberg-Kompensator?