OldSchoolHack

Register / Login English

User Search: KN4CK3R

Search-Information
KN4CK3R
Threads
Thread Forum Last Post Posts Views
icon

Go to first new post [Tutorial] [C++ von { bis }] 43 - Falsch gefangen Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 230
icon

Go to first new post [Tutorial] [C++ von { bis }] 41 - std::function Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview Preview

Go To Post

Quote from Bytes'n'Objects
** Zu diesem Video gibt es eine Korrektur unter Only registered and activated users can see links.

Die Sache mit den Lambda-Funktionen ist ja wunderbar, aber wie setzt man die eigentlich in eigenem Code ein? C++11 bietet dafür das std::function-Template, mit dem man Lambda-Funktionen, Funktionsobjekte und Funktionspointer unter einer einheitlichen Oberfläche verwenden kann.
---
Begleittext: Only registered and activated users can see links.

C++ Tutorial

Sat 12. Jul 2014, 19:11

by KN4CK3R Go to last post
0 874
icon

Go to first new post [Tutorial] [C++ von { bis }] 40 - lambda-Funktionen Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview Preview

Go To Post

Quote from Bytes'n'Objects
C++11 bringt was neues, was die Definition von Funktionsobjekten unglaublich vereinfacht: lambda-Funktionen bieten eine knappe neue Syntax, mit denen man anonyme Funktionsobjekte direkt am Ort des Geschehens definieren kann. Die kann man dann wie gewohnt als Parameter übergeben, speichern etc.pp.
---
Begleittext: Only registered and activated users can see links.
Alex Allain zum Thema lambda-Funktionen: Only registered and activated users can see links.

C++ Tutorial

Sat 12. Jul 2014, 19:11

by KN4CK3R Go to last post
0 232
icon

Go to first new post [Tutorial] [C++ von { bis }] 39 - Funktionsobjekte Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 189
icon

Go to first new post [Tutorial] [C++ von { bis }] 38 - Ein Iterator zur Außenwelt Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 224
icon

Go to first new post [Tutorial] [C++ von { bis }] 37 - Lass andere arbeiten Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 194
icon

Go to first new post [Tutorial] [C++ von { bis }] 36 - Von Containern Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 206
icon

Go to first new post [Tutorial] [C++ von { bis }] 35 - Iteratoren Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 842
icon

Go to first new post [Tutorial] [C++ von { bis }] 34 - Teilweise ziemlich speziell Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 206
icon

Go to first new post [Tutorial] [C++ von { bis }] 33 - Neue Typen generieren Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 250
icon

Go to first new post [Tutorial] [C++ von { bis }] 32 - Template Metaprogramming Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 246
icon

Go to first new post [Tutorial] [C++ von { bis }] 31 - Value Templates Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 250
icon

Go to first new post [Tutorial] [C++ von { bis }] 30 - Templatespezialisierung Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 251
icon

Go to first new post [Tutorial] [C++ von { bis }] 29 Funktionstemplates Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview Preview

Go To Post

Quote from Bytes'n'Objects
Der Trick mit den Templates funktioniert auch mit Funktionen. Die bieten dann noch eine kleine Nettigkeit nebenbei: sie können bestimmte ihrer Templateparameter automatisch ableiten.
---
Begleittext: Only registered and activated users can see links.

C++ Tutorial

Sat 12. Jul 2014, 19:11

by KN4CK3R Go to last post
0 213
icon

Go to first new post [Tutorial] [C++ von { bis }] 27 - Schwache Zeiger Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 290
icon

Go to first new post [Tutorial] [C++ von { bis }] 28 - Schlaue Zeiger (behind the scenes) Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 205
icon

Go to first new post [Tutorial] [C++ von { bis }] 26 - Schlaue Zeiger Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview Preview

Go To Post

Quote from Bytes'n'Objects
Ich mag keine nackten Zeiger. Die sind mir nicht intelligent genug. Glücklicherweise bietet C++11 mit std::shared_ptr (oder wahlweise die TR1 mit std::tr1::shared_ptr) da einen Ausweg: Objekte, die man wie Pointer verwenden kann, die sich aber selbst darum kümmern, aufzuräumen, wenn der letzte Pointer auf ein Objekt gelöscht wird.
---
Begleittext: Only registered and activated users can see links.
Boost-Bibliothek (für shared_ptr auf älteren Compilern): Only registered and activated users can see links.

C++ Tutorial

Sat 12. Jul 2014, 19:11

by KN4CK3R Go to last post
0 229
icon

Go to first new post [Tutorial] [C++ von { bis }] 23 - Namensräume Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 231
icon

Go to first new post [Tutorial] [C++ von { bis }] 23b - Namensräume Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview Preview

Go To Post

Quote from Bytes'n'Objects
Das zweite Video zu Namensräumen stellt zwei eher ungewöhnliche Features vor: Namensräume ohne Namen und inline Namespaces, die mit C++11 neu dazugekommen sind.
---
Begleittext: Only registered and activated users can see links.

C++ Tutorial

Sat 12. Jul 2014, 19:11

by KN4CK3R Go to last post
0 306
icon

Go to first new post [Tutorial] [C++ von { bis }] 22 - Automatisch umgewandelt Posted on: Sat 12. Jul 2014, 19:11

KN4CK3R

preview 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 Go to last post
0 245