const & Funktionsprototyp
-
Hallo, bei folgendem Programm soll entschieden werden welche "const" unzulässig sind. Laut der Lösung, die uns vorliegt, darf beim Funktionsprototyp "void cat(..." kein const am Ende stehen, sondern nur bei der eigentlichen Funktion, aber wieso?
Weiterhin kapieren wir nicht, wieso in der mystring::cat Methode die beiden "const" bei "const char* const startpos = 2;" unzulässig sind, das hintere der beiden besagt ja, dass das startpos nicht verändert werden darf und da ich dem ganzen c zuweisen will, muss das const weg...was macht aber das erste const?
int strlen( const char* s); char* strcpy( char* dest, const char* source); int strcmp( const char* a, const char* b); #include <cstring> class mystring { char c[100]; public: mystring(); mystring( const char* initstring); ~mystring(); void cat( const char* a) const ; void copy( const char* dest) const ; }; void mystring::cat( const char* a) const { const char* const startpos = c; startpos += strlen( c); strcpy( startpos, a); } void mystring::copy( const char* dest) const { strcpy( dest, c); }
-
das const passt bei cat nicht, da du den String verändern willst.
const char * const a
passt nicht, weil du den String an man: strcpy(3) übergeben willst und strcpy verändert ja den String und erwartet also ein char*.
-
Ok, das hab ich nun kapiert.
Wieso darf aber bei der folgenden Zeile das letzte "const" nicht stehen?
Die Methode cat ändert doch an meinen Membervariablen nichts, oder?void cat( const char* a) const ;
-
const am Ende bedeutet, dass du die Methode aus konstanten Onjekten heraus benutzen darfst.
-
Danke, füt die Antwort....aber könntest Du das bitte nochmal für einen "DAU" erklären?
-
Sowas wurde schon hundert mal erklärt, daher: Link