CPP2019SSF02: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche
(Grobstruktur)
Zeile 29: Zeile 29:
   
 
Ziel der uniform initialization ist eine einheitliche und konsistente Form der Initialisierung von Variablen und Objekten.
 
Ziel der uniform initialization ist eine einheitliche und konsistente Form der Initialisierung von Variablen und Objekten.
  +
  +
* erweitert initializer list Syntax
  +
* Most vexing parse
  +
* keine Unterschiede mehr in der Initialisierung von aggregate + non-aggregate Klassen, Arrays, STL/custom Klassen, and PODs
 
=== Vorherige Lösungsansätze ===
 
=== Vorherige Lösungsansätze ===
  +
  +
* default constructor (keine Klammern)
  +
* geschweifte Klammern für aggregate Klassen oder Arrays
  +
* Konstruktor mit normalen Klammern
   
 
=== Warnhinweise ===
 
=== Warnhinweise ===
  +
  +
* Vektorinitialisierung
   
 
=== Code-Beispiele ===
 
=== Code-Beispiele ===

Version vom 9. Juli 2019, 09:06 Uhr

Feature: Uniform Initialization

  • Eingeführt in: C++11

Syntax

type varname {arg1, arg2, ..., argn};

Use Cases

War zur Initialisierung von Vektoren vor C++11 noch ein for-loop nötig, wurde dies mit der uniform initialization deutlich vereinfacht:

vector<int> v {1, 2, 3, 4};

Auch das Erzeugen von temporären Objekten ist nun einfacher möglich:

void drawRect(Rectangle rect);

drawRect( {obj.origin, obj.extents} );

Motivation für die Einführung

Ziel der uniform initialization ist eine einheitliche und konsistente Form der Initialisierung von Variablen und Objekten.

  • erweitert initializer list Syntax
  • Most vexing parse
  • keine Unterschiede mehr in der Initialisierung von aggregate + non-aggregate Klassen, Arrays, STL/custom Klassen, and PODs

Vorherige Lösungsansätze

  • default constructor (keine Klammern)
  • geschweifte Klammern für aggregate Klassen oder Arrays
  • Konstruktor mit normalen Klammern

Warnhinweise

  • Vektorinitialisierung

Code-Beispiele