Konstruktor als "explicit" deklarieren
-
Guten Abend!
Ich habe mir eben eine Highscorelisten-Klasse zusammengebastelt, deren
Konstruktor einen int Parameter erhält.class CHighscore { public: CHighscore(int nEntries); // ... private: // ... };
Um sicherzugehen, dass wirklich mit einem ganzzahligen Wert konstruiert
wird, habe ich später den Konstruktur als "explicit" deklariert.
Allerdings habe ich folgendes getestet:int main() { CHighscore highscore('5'); // Implizite Konvertierung wurde doch verboten? }
und der Compiler (g++) hat weder einen Fehler noch eine Warnung ausgegeben.
Ich gehe mal stark davon aus, dass ich den Sinn von "explicit" falsch
verstanden habe, also bitte um Aufklärunggruß,
walker
-
Du hast damit eine implizite Konvertierung von int nach CHighscore verboten, aber natürlich nicht die Konvertierung von char nach int
-
explicit verhindert nur:
CHighscore highscore = 42;
-
std::vector<CHighscore> highscorelists; highscorelists.push_back(10); // Wuerde somit auch nicht mehr funktionieren oder?
Ok, ich glaub ich habs verstanden
Vielen Dank!
gruß,
walker