1. Ne engedjetek .h-ba definíciót írni! Ha valaki ilyenre vetemedik szembesülni fog linkelési hibákkal, ugyanis a rendez.cpp is include-olja a string2.h-t!

  2. Az előre elkészített paraméter nélkül hívható konstruktor NULL pointert állít be, amit a szintén előre elkészített c_str() habozás nélkül visszaad. Ezt indulásnak kicsit rágjátok meg!

  3. Ha valaki a konstruktor előtti komment szerint a b) változatot választja az üres sztring létrehozására, ugyanakkor valamelyik tagfüggvényben (pl. a + operator) létrehoz magának egy üres temp sztringet, akkor annak a dinamikus, területét fel kell szabadítani mielőtt a pointerét használná! Különben memóriafogyás lesz.

Beolvasás

// << operátor, ami beolvas az istreamről egy szót
std::istream& operator>>(std::istream& is, String& s0) {
    unsigned char ch;
    s0 = String("");                   // üres string, ehhez fűzünk hozzá
    std::ios_base::fmtflags fl = is.flags(); // eltesszük a régi flag-eket
    is.setf(ios_base::skipws);         // az elején eldobjuk a ws-t
    while (is >> ch) {
    is.unsetf(ios_base::skipws);   // utána pedig már nem
        if (isspace(ch)) {
            is.putback(ch);            // na ezt nem kérjük
            break;
        } else {
            s0 = s0 + ch;              // végére fűzzük a karaktert
        }
    }
    is.flags(fl);                      // visszaállítjuk a flag-eket
    return is;
}