Frage zu Casting
-
Casting ist ja eine Typ-Umwandlung also z.B. "int" nach "double". Ich mach das immer mit "(double)MeinInteger".
Ich hab aber schon oft Castings mit <double> oder so ähnlich gesehen. Sind die identisch oder gibts da Unterschiede? Wenn ja welche?
Danke im Voraus.
SWW13
-
Also ich verwende prinzipiell static_cast, was mit C++ eingeführt wurde und in Sachen Pointer besser ist, als die C Variante.
-
Ist dann <double> ein static cast? Und was macht das für nen Unterschied?
-
double d=static_cast<double>(i); douole d=(double)i; double d=double(i);//ich nehme bisher diese variante am liebsten
-
Ok, es macht also keine Unterschied welche man nimmt, oder?
-
SWW13 schrieb:
Ok, es macht also keine Unterschied welche man nimmt, oder?
DOCH!
-
SWW13 schrieb:
Ok, es macht also keine Unterschied welche man nimmt, oder?
bei double und int nicht.
bei zeigern ist es heikler, da nehme ich auch static_cast oder const_cast oder dynamsic_cast oder reinterpret_cast, was halt das geringste übel ist.
-
Hmm, ok.
Bei normalen strd. Typen ohne Zeiger kann ich also alle nehmen.(?)
Bei Zeiger sollte ich dann einen von den ..._cast<... *> nehmen, oder? Was ist der Unterschied zwischen denen?
-
ein wenig text zu den <>-casts:
http://www.geocities.com/matfauzee1/Module22.html
-
Dann hab ich für die nächsten Tage was zu lesen...
Danke für die Infos.
-
http://tutorial.schornboeck.net/casts.htm
Diese beiden Casts funktionieren zwar auch, allerdings casten sie immer - auch wenn eine Konvertierung garnicht sinnvoll ist. Deswegen sollte man in C++ besser die 'neuen' casts wie static_cast verwenden.
-
das klingt mir ein wenig zu absolut.
#include <iostream> #include <string> using namespace std; char const* const rootpath="c:/foo"; int main() { string fullpath=static_cast<string>(rootpath)+"/log.txt"; cout<<fullpath<<'\n'; }das finde ich nicht hübsch.
deswegen nehme ich bei werten, egal ob string oder double) den funktionalstil.#include <iostream> #include <string> using namespace std; char const* const rootpath="c:/foo"; int main() { string fullpath=string(rootpath)+"/log.txt"; cout<<fullpath<<'\n'; }
-
Naja gut wie du meinst volkard. Ich denke es ist auch eine Frage des Geschmacks und ich werde bei static_cast bleiben.