|
Thread |
Forum |
Last Post |
Posts |
Views |
 |
[Tutorial] [C++ von { bis }] 43 - Falsch gefangen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Beim letzten Mal hatte ich behauptet, dass Referenzen in der Capture List einer lambda-Funktion gefährlich sein können. Den Beweis möchte ich diesmal antreten, indem ich das schlimmste produziere, was ein C++-Programm enthalten kann: undefined behaviour. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
230 |
 |
[Tutorial] [C++ von { bis }] 41 - std::function
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
874 |
 |
[Tutorial] [C++ von { bis }] 40 - lambda-Funktionen
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
232 |
 |
[Tutorial] [C++ von { bis }] 39 - Funktionsobjekte
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Objekte, die als Funktionen aufgerufen werden können? Wozu soll denn das gut sein? Nun, C++ bietet von Haus aus nicht wirklich flexible Möglichkeiten, Funktionen als Parameter zu übergeben. Die Standardbibliothek braucht aber hin und wieder mal Informationen von außen, die sich am besten per Funktionsaufruf abholen lassen. Praktisch, dass man mit Funktionsobjekten eine Lösung dafür hat. Das Beispiel zeigt den Einsatz bei std::sort. In den Algorithmen der Standardbibliothek gibt es aber noch eine Menge mehr. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
189 |
 |
[Tutorial] [C++ von { bis }] 38 - Ein Iterator zur Außenwelt
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Wenn die Standardbibliothek mal nicht den passenden Iterator für unsere Anwendungszwecke bereithält, dann implementieren wir uns eben unseren eigenen. Im Beispiel sollen die über einen passenden OutputIterator geschriebenen Werte in einer grafischen Oberfläche landen. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
224 |
 |
[Tutorial] [C++ von { bis }] 37 - Lass andere arbeiten
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Code, den man wiederverwenden kann, muss man nicht selbst (oder nochmal) schreiben. In dem Sinne bietet die Standardbibliothek durchaus einiges, was man immer mal wieder braucht. Heute schauen wir uns an, wie wir std::copy zur Ausgabe von Datenstrukturen wie Listen und Arrays verwenden können. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
194 |
 |
[Tutorial] [C++ von { bis }] 36 - Von Containern
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein -- leider etwas chaotischer -- Einstieg in die Standardbibliothek, der nochmal demonstriert, was das Konzept der Iteratoren alles an Möglichkeiten bietet. Auf zwei so verschiedenen Datenstrukturen, wie einem std::vector und einer std::list kann mittels Iteratoren der selbe Algorithmus angewandt werden. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
206 |
 |
[Tutorial] [C++ von { bis }] 35 - Iteratoren
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Ein flexibles, aber etwas theoretisches Konzept: Iteratoren. Als Verallgemeinerung der Pointer können sie nicht nur an Speicheradressen gebunden sein, sondern das Konzept "ich zeige auf einen Wert" beliebig implementieren. Weil's erstmal nur ein theoretischer Einstieg ist, gibt es heute keinen Code, sondern nur Erklärungen, was der Standard von Iteratoren so fordert und welche verschiedenen es gibt. --- Begleittext (diesmal allerdings eher knapp): Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
842 |
 |
[Tutorial] [C++ von { bis }] 34 - Teilweise ziemlich speziell
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Templates in C++ müssen nicht immer für alle Möglichkeiten spezialisiert werden. Im Gegenteil: man kann die Tatsache, dass man bestimmte Spezialisierungen weglässt, ausnutzen, um den Compiler absichtlich in einen Fehler zu treiben. Das nutzen wir, um bei unserem RangeInt Zuweisungen auf prinzipielle Machbarkeit zu prüfen. Kann der Compiler nachweisen, dass eine Zuweisung nie klappen kann, dann schlägt die Übersetzung fehl. Ansonsten geht's ganz normal weiter. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
206 |
 |
[Tutorial] [C++ von { bis }] 33 - Neue Typen generieren
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Unser RangeInt vom letzten Mal ist so noch wenig nützlich. Man kann ihn belegen, kopieren und zuweisen, aber nicht mit ihm rechnen. Diesmal soll gezeigt werden, wie man C++-Templates dafür nutzen kann, bei der Implementierung von Rechenoperationen schon zu prüfen, ob die Grenzen der beteiligten Typen eingehalten werden. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
250 |
 |
[Tutorial] [C++ von { bis }] 32 - Template Metaprogramming
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Einer der Punkte, an dem man sich immer wieder das Hirn verknotet: mit Templates kann man programmieren. Die entsprechenden Programme werden allerdings nicht zur Laufzeit ausgeführt, sondern während des Übersetzens des Programms. Quasi eine Meta-Sprache, mit der man das Verhalten des Compilers ändern kann. Wir benutzen das hier, um unser beim letzten Mal eingeführtes RangeInt zu verbessern: statt strikter Inkompatibilität wird es jetzt nur noch kritisch, wenn wir tatsächlich inkompatible Bereiche haben. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
246 |
 |
[Tutorial] [C++ von { bis }] 31 - Value Templates
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Templates können noch mehr, als nur Typen als Parameter annehmen: ein Templateparameter kann auch einen Typ haben und einen Wert dieses Typs als Parameterwert übernehmen. Das kann man (wie in unserem Beispiel) dafür ausnutzen, abhängig von bestimmten Konstanten (hier: Bereichsgrenzen) unterschiedliche Typen zu instanziieren. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
250 |
 |
[Tutorial] [C++ von { bis }] 30 - Templatespezialisierung
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Wenn's mal wieder was spezielles sein soll: ist ein Template zu allgemein, kann man es für bestimmte Parametertypen spezialisieren. Man gibt für den entsprechenden Typen eine eigene Variante an, die der Compiler dann verwendet, statt dass allgemeine Template zu instanziieren.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
251 |
 |
[Tutorial] [C++ von { bis }] 29 Funktionstemplates
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
213 |
 |
[Tutorial] [C++ von { bis }] 27 - Schwache Zeiger
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects std::shared_ptr und kreisförmige Objektbeziehungen vertragen sich so gar nicht. Da man aber derartige Entwürfe durchaus mal braucht, gibt es std::weak_ptr: ein Objekt, welches immer an einen shared_ptr gebunden ist, aber selbst nicht für den Referenzzähler zählt und somit das Löschen des Objektes nicht verhindert. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
290 |
 |
[Tutorial] [C++ von { bis }] 28 - Schlaue Zeiger (behind the scenes)
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Nachdem die letzten beiden Videos verschiedene Smart Pointer von C++11 beleuchtet haben, geht es diesmal darum, wie sowas eigentlich unter der Haube aussehen könnte. Nebenbei erkläre ich noch, wie man ein Objekt dazu bringt, sich wie ein Pointer zu verhalten. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
205 |
 |
[Tutorial] [C++ von { bis }] 26 - Schlaue Zeiger
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
229 |
 |
[Tutorial] [C++ von { bis }] 23 - Namensräume
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Heute mal zwei Videos, weil es letzte Woche keins gab. Das Thema sind Namespaces. Eigentlich auf den ersten Blick ein simples Thema: man hat Präfixe vor Namen um diese eindeutig zu machen. Auf den zweiten Blick ist es dann doch etwas umfangreicher. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
231 |
 |
[Tutorial] [C++ von { bis }] 23b - Namensräume
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
306 |
 |
[Tutorial] [C++ von { bis }] 22 - Automatisch umgewandelt
Posted on: Sat 12. Jul 2014, 19:11
KN4CK3R
Preview
Go To Post
Quote from Bytes'n'Objects Damit sich ein eigener Datentyp so richtig nach "C++" anfühlt, bauen wir in unser Optional-Template diesmal ein paar Funktionen zur Umwandlung in den Basistyp um. Wir möchten gern an Stellen, wo der Basistyp verwendet wird, einfach auch ein entsprechendes Optional angeben können. Umgekehrt genauso: ein Optional soll auch durch den Basistyp gefüllt werden können. Das Video zeigt, wie's geht und was Operatorüberladung und Konvertierungsfunktionen damit zu tun haben. --- Begleittext: Only registered and activated users can see links.
|
C++ Tutorial |
Sat 12. Jul 2014, 19:11
by KN4CK3R
|
0 |
245 |