Dies ist aus mehreren Gründen nicht zur Arbeit gehen:
derp
ist Array kein nullterminierte, die es, wenn Sie es als Parameter an strcat
- Es gibt keine Prüfung ist geben sein muss dass der Puffer, den
value
darstellt, tatsächlich mehr Daten enthalten kann; es gibt auch keine Möglichkeit, sicherzustellen, dass der Puffer immer null-terminiert ist (was wiederum notwendig ist, weil Sie ihn an strcat
übergeben).
- Auch wenn Sie die oben genannten korrigieren, kann Ihre String-Klasse nie enthalten das Zeichen
\0
als Teil eines Zeichenfolgenwerts, da dies mit einem Null-Terminator verwechselt wird; In technischer Hinsicht wäre Ihre String-Klasse nicht "binär sicher"; dieses Problem zu beheben Sie benötigen strcat
und ähnliche Funktionen vollständig und wechseln Sie in memcpy
und Freunde aus der obigen
Neben fallen zu lassen, ermöglicht Code wie
MyString str("foo");
foo += 80; // this compiles, but should it?
schließlich die str***
Familie operator +=
wie diese Überlastung der Funktionen wird unnötigerweise langsamer, wenn Ihre Strings größer werden (weil sie die Zeichenkette jedes Mal von Anfang an durchsuchen müssen, um zu bestimmen, wo sie endet). Indem Sie Ihre eigene Längenvariable beibehalten und zu mem***
wechseln, wird dieses Problem ebenfalls behoben.
Ist das Hausaufgaben? Wenn nicht, warum programmieren Sie sogar Ihre eigene "String" -Klasse? – Griwes
char * derp = "x"; derp [0] = c; – k06a
@Griwes, könnten sie nur versuchen zu lernen. –