Kopierinitialisierung mit Initialisierungslisten [] (Kopierinitialisierung mit Initialisierungslisten), Lektion, Seite 723359
https://www.purl.org/stefan_ram/pub/kopierinitialisierung_initialisierungslisten_c++ (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Kopierinitialisierung mit Initialisierungslisten

Initialisierungslisten-Kopierinitialisierung

Die Initialisierungslisten-Kopierinitialisierung ist an der Kombination aus geschweiften Klammern (Initialisierungsliste) und Gleichheitszeichen (kopieren) zu erkennen. Falls sie überhaupt möglich ist, hat sie dieselbe Wirkung wie die Initialisierungslisten-Nichtkopierinitialisierung.

main.cpp
#include <initializer_list>
#include <iostream> /* ::std::cout */
#include <ostream> /* << */
#include <string> /* ::std::string */ int main()
{ { ::std::string const s{ 68, 'D' }; ::std::cout << s << '\n'; }
{ ::std::string const s ={ 68, 'D' }; ::std::cout << s << '\n'; }
{ ::std::string const s( { 68, 'D' } ); ::std::cout << s << '\n'; }}
::std::cout
DD
DD
DD

Im allgemeinen verlangt die Listen-Kopierinitialisierung zunächst stillschweigend eine Wandlung des Typs des Ausdrucks rechts vom Gleichheitszeichen in den Typ des Ausdrucks links vom Gleichheitszeichen. Daher ist sie nicht bei Typen möglich, die solche stillschweigenden Typwandlungen nicht erlauben.

Dokumentation der Klasse »::std::string« nach n3797, 21.4.2 (vereinfacht)
::std::string …( ::std::initializer_list< char >l );
Anlegen eines ::std::string-Exemplars mit dem Text der Zeichen einer Initialisierungsliste
::std::string …( ::std::string const s );
Anlegen eines ::std::string-Exemplars mit dem Text eines anderen ::std::string-Exemplars.
::std::string …( char const * s );
Anlegen eines ::std::string-Exemplars mit dem Text eines Zeichenfolgenliterals.
::std::string …( int n, char c );
Anlegen eines ::std::string-Exemplars mit dem Text einer n-fachen Wiederholung des Zeichens c.

Die Initialisierung in dem folgenden Programm ist eine normale Kopierinitialisierung, keine Listen-Kopierinitialisierung, da die runden Klammern Teil des Ausdrucks sind, aber keine spezielle Art der Initialisierung kennzeichnen.

main.cpp
#include <initializer_list>
#include <iostream> /* ::std::cout */
#include <ostream> /* << */
#include <string> /* ::std::string */ int main()
{ ::std::string const b =( "beta" ); ::std::cout << b << '\n'; }
::std::cout
beta
Dokumentation der Klasse »::std::string« nach n3797, 21.4.2 (vereinfacht)
::std::string …( ::std::initializer_list< char >l );
Anlegen eines ::std::string-Exemplars mit dem Text der Zeichen einer Initialisierungsliste
::std::string …( ::std::string const s );
Anlegen eines ::std::string-Exemplars mit dem Text eines anderen ::std::string-Exemplars.
::std::string …( char const * s );
Anlegen eines ::std::string-Exemplars mit dem Text eines Zeichenfolgenliterals.
::std::string …( int n, char c );
Anlegen eines ::std::string-Exemplars mit dem Text einer n-fachen Wiederholung des Zeichens c.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723359 stefan_ram:723359 Kopierinitialisierung mit Initialisierungslisten Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723359, slrprddef723359, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/kopierinitialisierung_initialisierungslisten_c++