Unterschied T x = U; zu T x(U);
-
Ich dachte immer es gäbe keinen Unterschied zwischen:
T x = U;und
T x(U);Aber auf einmal krieg ich bei
stringstream x = someStdString;eine Fehlermeldung:
error: conversion from `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to non-scalar type `std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >' requestedWenn ich's mit der anderen Methode mache, dann geht's. Hä?
mfg.
-
hi,
wahrscheinlich wird bei = der copy-konstruktor, und beim anderen der richtige konstruktor für diesen datentyp aufgerufen.
-
T x(U) ist direkte Initialisierung, T x = U ist Copy-Initialisierung, d. h.
- wenn U vom Typ T ist, verhält es sich wie T x(U)
- wenn U von einem anderen Typ ist, verhält es sich wie T x(T(U)). Dabei darf der Compiler optimieren
-
Nein, auch bei verschiedenen Typen wird nur der Umwandlungs-Ctor aufgerufen. Allerdings ist "T x=u;" eine implizite Umwandlung, d.h. wenn der entsprechende Ctor mit "explicit" gekennzeichnet ist, funktioniert nur die explizite Form "T x(u);".
-
Etwas ausführlicher:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=copyvsdirect#Answ
-
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

-
Michael E. logged out schrieb:
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

Wer isn Sutter?
mfg.
-
-
joomoo schrieb:
Michael E. logged out schrieb:
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

Wer isn Sutter?
Die Frage wollte ich auch stellen - wenn meine Bemerkung 1:1 in einem Buch drinstand, ist das wohl Zufall.
-
joomoo schrieb:
Michael E. logged out schrieb:
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

Wer isn Sutter?
mfg.
CStoll schrieb:
joomoo schrieb:
Michael E. logged out schrieb:
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

Wer isn Sutter?
Die Frage wollte ich auch stellen - wenn meine Bemerkung 1:1 in einem Buch drinstand, ist das wohl Zufall.
Ihr kennt Sutter nicht? Wo lebt ihr denn?

-
Hintern Mond
(Gegenfrage: Wieso muß ich jeden kennen, der mal irgendwas über C++ geschrieben hat?)
-
CStoll schrieb:
Hintern Mond
(Gegenfrage: Wieso muß ich jeden kennen, der mal irgendwas über C++ geschrieben hat?)Na ja, aber Sutter ist nicht irgendjemand, er hat die Exceptional Bücher geschrieben und auch die Coding Standards zusammen mit Alexandrescu. Er sitzt (ich glaub zusammen mit Lippmann) bei MS in der VC++ Kommission (keine Ahnung, ob das so heißt) und schreibt regelmäßig größere und bedeutende Artikel für den C/C++ Report.
EDIT: Er werkelt auch am neuen C++ Standard rum, ebenfalls für MS.
Von dem sollte man schon mal gehört haben

-
CStoll schrieb:
Wieso muß ich jeden kennen, der mal irgendwas über C++ geschrieben hat?)
"Irgendwas" ist wirklich leicht untertrieben.
Schau einfach mal rein: http://gotw.ca/
-
CStoll schrieb:
joomoo schrieb:
Michael E. logged out schrieb:
CStoll schrieb:
Nein,
1:1 von Sutter kopiert

Wer isn Sutter?
Die Frage wollte ich auch stellen - wenn meine Bemerkung 1:1 in einem Buch drinstand, ist das wohl Zufall.
Du hast mich falsch verstanden. Ich hab aus seinem Buch abgeschrieben und du sagst einfach mal so "Nö, stimmt net".