|
Thread |
Forum |
Last Post |
Posts |
Views |
 |
[Tutorial] [C++ von { bis }] 21 - Ein Ausnahmetalent
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Fehler? Wer macht hier Fehler? Ganz einfach: jedes Programm hat hin und wieder mit Fehlerbedingungen zu kämpfen. Die klassische Variante um sowas zu signalisieren: Fehlercodes zurückgeben. Dummerweise müssen diese dann auch immer lokal behandelt werden. C++ bietet mit den Exceptions eine Möglichkeit, eine nicht-lokale Behandlung von Fehlern zu machen. Außerdem muss man auf die Art und Weise den Ergebnisraum einer Funktion nicht mit dem Raum möglicher Fehler vermischen (was man beim Rückgabewert ja machen müsste). Das können wir für unser Optional-Template ganz hervorragend gebrauchen. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
235 |
 |
[Tutorial] [C++ von { bis }] 20 - Klassen-Templates
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Wenn der Compiler für uns programmiert: Klassen-Templates bieten in C++ die Möglichkeit, den Compiler die Arbeit übernehmen zu lassen, wenn es darum geht, ähnliche Klassen für verschiedene Typen zu implementieren. Das Video zeigt das ganze am Beispiel einer Variablenklasse, die sich zusätzlich zum Wert der Variable auch noch merkt, ob diese überhaupt schonmal gesetzt wurde (und somit einen gültigen Wert enthält). Das Video soll den Start einer Serie von mehreren markieren, in denen ich mich entlang eines zu lösenden Problems hangle, um verschiedene Sprachmittel von C++ zu zeigen. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
248 |
 |
[Tutorial] [C++ von { bis }] 19 - new mit Initialisierung
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein kleiner Zusatz zum vorherigen Video: wie kann man bei der Verwendung dynamischer Speicherverwaltung eigentlich einen eigenen Konstruktor aufrufen? Speziell auch die Frage: wie geht das bei der Array-Initialisierung (schonmal so zum Anfang: erst ab C++11 geht's überhaupt). --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
201 |
 |
[Tutorial] [C++ von { bis }] 17 - Deadly Diamond of Death - Teil 2
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Mit virtueller Vererbung ist das Diamantenproblem leider noch nicht gelöst. Funktionen, die in unterschiedlichen Teilen des Vererbungspfades unterschiedlich überschrieben wurden, können immer noch zu Problemen führen. Ähnliches passiert, wenn man beim Mischen unterschiedlicher, völlig unabhängiger Basisklassen zufällig über Funktionen gleichen Namens und gleicher Signatur stolpert. Die Lösung kann in solchen Fällen lauten: selbst überschreiben. Oder den Entwurf nochmal kritisch prüfen. --- Link zum Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
278 |
 |
[Tutorial] [C++ von { bis }] 16 - Der Deadly Diamond of Death - Das Diamantenproblem
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
246 |
 |
[Tutorial] [C++ von { bis }] 15 - Mehrfachvererbung
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Wenn eine Klasse sowohl das eine, als auch das andere sein kann, dann kann man in C++ zur Mehrfachvererbung greifen. Klassen können völlig gleichberechtigt von mehreren Basisklassen erben und sich so eine Schnittstelle "zusammenmischen". Der Begleittext zum Video findet sich unter Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
240 |
 |
[Tutorial] [C++ von { bis }] 14 - Abstrakte Klassen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Was macht man, wenn man eine Schnittstelle festlegen will, aber die betreffende Klasse nicht sinnvoll instanziiert werden kann? Ganz einfach: man macht sie abstrakt. Sobald eine Klasse eine pure virtual Methode enthält, verhindert der Compiler, dass wir Objekte von ihr erzeugen. -- In related news: zu den Videos gibt es jetzt auch eine Webseite mit den Quelltexten und begleitenden Informationen: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
292 |
 |
[Tutorial] [C++ von { bis }] 13b - virtual tables
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein Zusatzvideo zum Video über virtual-Funktionen: wie wird das Konzept typischerweise implementiert? Wir schauen uns an, wie virtual tables bei der Implementierung des dynamischen Bindens von Funktionen helfen. Ach ja und: ich weiß, dass Wikipedia ein sehr ähnliches Beispiel verwendet. Hätte ich mal vorher geschaut... Hätte mir Denkaufwand gespart.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
230 |
 |
[Tutorial] [C++ von { bis }] 13 - virtual-Funktionen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein großes und spannendes Thema: dynamisches Binden (auch wenn ich gestehen muss, dass ich den Begriff im Video kein einziges Mal erwähne.) Wie können Funktionen einer Basisklasse in abgeleiteten Klassen überschrieben und dann zur Laufzeit die überschriebenen Varianten aufgerufen werden, selbst wenn man an der Aufrufstelle nicht so genau weiß, welche abgeleitete Klasse eigentlich hinter dem Objekt steckt? Die Lösung: dynamisches Binden von Funktionen. Im Video wird's erklärt. Viel Spaß...
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
225 |
 |
[Tutorial] [C++ von { bis }] 12 - Ableiten
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Richtig interessant werden Klassen erst durch Ableitung: allgemeine Konzepte in die Basisklasse, speziellere Konzepte in die abgeleiteten Klassen. So macht der Aufbau von modularen und wiederverwendbaren Programmen Spaß.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
250 |
 |
[Tutorial] [C++ von { bis }] 11 - Konstruktoren & Destruktor
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Am Anfang und Ende der Lebenszeit von Objekten kann man in C++ darauf vertrauen, das automatisch spezielle Funktionen aufgerufen werden. Mittels Konstruktoren und des Destruktors kann man so benötigte Ressourcen initialisieren und aufräumen, eine praktische Technik um Code modular und aufgeräumt zu halten.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
287 |
 |
[Tutorial] [C++ von { bis }] 9 - const specifier
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein Sprachmittel, was uns die korrekte Programmierung erleichter und auch noch dem Compiler mehr Optimierungen ermöglicht? Fast zu schön, um wahr zu sein, aber mit dem const specifier geht das tatsächlich. Einerseits können wir uns bei geeigneter Verwendung davon abhalten, irgendwelche Sachen versehentlich zu verändern und andererseits kann der Compiler dadurch Funktionsaufrufe oder Variablenzugriffe optimieren.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
315 |
 |
[Tutorial] [C++ von { bis }] 8 - Funktionen überladen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein Konzept, verschiedene Namen? Nicht mit C++. Wenn man ein bestimmtes Konzept für verschiedene Datentypen implementieren will, dass kann man das in C++ ohne dafür jedesmal einen neuen Namen zu verwenden. Der Compiler entscheidet anhand der Typen in der Parameterliste einer Funktion, welche Variante zu verwenden ist. Wie er das macht und wo es dabei uneindeutig werden kann erklärt dieses Video.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
232 |
 |
[Tutorial] [C++ von { bis }] 7b - Kontrollstrukturen Teil 2
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Nur lineare Programmausführung ist langweilig. Wir brauchen also Kontrollstrukturen, mit denen wir den Programmfluss abhängig von Bedingungen verzweigen können. C++ bietet den üblichen Satz an ifs und Schleifen, wenn auch hier und da mit der ein oder anderen Falle. Das Video ist der zweite Teil von zwei. Der erste Teil ist verfügbar unter Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
251 |
 |
[Tutorial] [C++ von { bis }] 7 - Kontrollstrukturen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Nur lineare Programmausführung ist langweilig. Wir brauchen also Kontrollstrukturen, mit denen wir den Programmfluss abhängig von Bedingungen verzweigen können. C++ bietet den üblichen Satz an ifs und Schleifen, wenn auch hier und da mit der ein oder anderen Falle. Das Video ist der erste Teil von zwei. Der zweite Teil ist verfügbar unter Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
256 |
 |
[Tutorial] [C++ von { bis }] 6b - Zeiger anlegen und... Feuer!
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein kleines Beispiel dafür, wo man sich mit Zeiger schwer zu debuggende Probleme einhandeln kann. Das Problem: der Compiler glaubt einem viel zu viel, auch wenn man gerade als Programmierer wieder in einem Anfall geistiger Umnachtung nicht weiß, was man tut.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
264 |
 |
[Tutorial] [C++ von { bis }] 6 - Zeiger
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein Thema, was nicht immer unumstritten ist: Zeiger. Ob man sie nun mag oder nicht: sie sind Bestandteil der Sprache und für einige Dinge auch unabdingbar, also werfen wir mal einen einführenden Blick auf das Konzept. Auch diesmal gibt's wieder ein Zusatzvideo, in dem ich ein kurzes Beispiel dafür zeige, wie man sich mit Zeigern Schwierigkeiten einhandeln kann: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
298 |
 |
[Tutorial] [C++ von { bis }] 4b - In den Fuß schießen mit Basisdatentypen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Eine der dunklen Ecken von C++: man kann kommentarlos die Basisdatentypen ineinander umwandeln, auch wenn das gar nicht passt. Das Video zeigt einige der netten Effekte beim gedankenlosen Umgang mit verschiedenen Datentypen und gibt einen Hinweis, wie man Problemen aus dem Weg geht.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
266 |
 |
[Tutorial] [C++ von { bis }] Mehr Präprozessor
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Der Präprozessor kann mehr, als nur ein paar Dateien einfügen. Dieses Video geht detaillierter auf seine Fähigkeiten ein. Zu dem Zweck bauen wir eine paar Macros, mit denen man den Verlauf einen Programms nachverfolgen kann und zeigen, wie man aus ein und derselben Codebasis mit dem Präprozessor unterschiedliche Versionen einen Programms bauen kann. Only registered and activated users can see links. - Wikipedia-Link zum C-Präprozessor (welcher der gleiche ist, wie bei C++)
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
313 |
 |
[Tutorial] [C++ von { bis }] 4 - Basisdatentypen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Programmieren wird ja auch als "Datenverarbeitung" bezeichnet. Üblicherweise will man also Daten verarbeiten und die haben in C++ zwingend immer einen Datentyp. Die Sprache kennt einige Basisdatentypen, die im aktuellen Video vorgestellt werden.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
257 |