OldSchoolHack

Registrieren / Anmelden Deutsch

Benutzersuche: KN4CK3R

Such-Informationen
KN4CK3R
Themen im Forum
Thema Forum Letzter Beitrag Beiträge Zugriffe
icon

Go to first new post [Tutorial] [C++ von { bis }] 21 - Ein Ausnahmetalent Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 235
icon

Go to first new post [Tutorial] [C++ von { bis }] 20 - Klassen-Templates Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 248
icon

Go to first new post [Tutorial] [C++ von { bis }] 19 - new mit Initialisierung Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 201
icon

Go to first new post [Tutorial] [C++ von { bis }] 17 - Deadly Diamond of Death - Teil 2 Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 278
icon

Go to first new post [Tutorial] [C++ von { bis }] 16 - Der Deadly Diamond of Death - Das Diamantenproblem Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von Bytes'n'Objects
Ein Problem, welches alle Programmiersprachen, die Mehrfachvererbung unterstützen, auf die eine oder andere Weise angehen müssen: das Diamantenproblem, bei dem eine Klasse über mehrere Wege von der gleichen Basisklasse erbt. Die Lösung von C++ ist wie immer sehr flexibel und hat so ihre ganz eigenen Tücken.

Begleittext zum Video: Um Links zu sehen, musst du dich registrieren
Der englische Wikipediaartikel zur Mehrfachvererbung: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 246
icon

Go to first new post [Tutorial] [C++ von { bis }] 15 - Mehrfachvererbung Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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 Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 239
icon

Go to first new post [Tutorial] [C++ von { bis }] 14 - Abstrakte Klassen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 292
icon

Go to first new post [Tutorial] [C++ von { bis }] 13b - virtual tables Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 230
icon

Go to first new post [Tutorial] [C++ von { bis }] 13 - virtual-Funktionen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 225
icon

Go to first new post [Tutorial] [C++ von { bis }] 12 - Ableiten Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 250
icon

Go to first new post [Tutorial] [C++ von { bis }] 11 - Konstruktoren & Destruktor Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 287
icon

Go to first new post [Tutorial] [C++ von { bis }] 9 - const specifier Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 315
icon

Go to first new post [Tutorial] [C++ von { bis }] 8 - Funktionen überladen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 232
icon

Go to first new post [Tutorial] [C++ von { bis }] 7b - Kontrollstrukturen Teil 2 Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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 Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 251
icon

Go to first new post [Tutorial] [C++ von { bis }] 7 - Kontrollstrukturen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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 Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 256
icon

Go to first new post [Tutorial] [C++ von { bis }] 6b - Zeiger anlegen und... Feuer! Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 264
icon

Go to first new post [Tutorial] [C++ von { bis }] 6 - Zeiger Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 298
icon

Go to first new post [Tutorial] [C++ von { bis }] 4b - In den Fuß schießen mit Basisdatentypen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 266
icon

Go to first new post [Tutorial] [C++ von { bis }] Mehr Präprozessor Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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.

Um Links zu sehen, musst du dich registrieren - Wikipedia-Link zum C-Präprozessor (welcher der gleiche ist, wie bei C++)

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 313
icon

Go to first new post [Tutorial] [C++ von { bis }] 4 - Basisdatentypen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 257