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 }] 43 - Falsch gefangen Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: 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 }] 41 - std::function Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

Zitat von Bytes'n'Objects
** Zu diesem Video gibt es eine Korrektur unter Um Links zu sehen, musst du dich registrieren

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 881
icon

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

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren
Alex Allain zum Thema lambda-Funktionen: Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 234
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 199
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 226
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 208
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 209
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 847
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 209
icon

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

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: 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 }] 32 - Template Metaprogramming Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 247
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 254
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 251
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 214
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 290
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 208
icon

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

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: Um Links zu sehen, musst du dich registrieren
Boost-Bibliothek (für shared_ptr auf älteren Compilern): Um Links zu sehen, musst du dich registrieren

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 234
icon

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

KN4CK3R

preview Vorschau

Go To Post

Zitat von 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: 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 }] 23b - Namensräume Erstellt am: Sa 12. Jul 2014, 19:11

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 318
icon

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

KN4CK3R

preview Vorschau

Go To Post

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

C++ Tutorial

Sa 12. Jul 2014, 19:11

von KN4CK3R Go to last post
0 249