Initialisierungsliste einer Klasse



  • class CTest {
    char* name;
    CTest(char* szname): name(szname) {}
    }
    

    wo wird die speicher name denn abgelegt? auf Stack oder Heap?

    // name(szname) == char* name = szname     ?
    // name(szname) == char* name = new char[] ?
    


  • Hier wird garnichts angelegt, der Zeiger übernimmt direkt das übergebene Objekt.



  • Xebov schrieb:

    Hier wird garnichts angelegt, der Zeiger übernimmt direkt das übergebene Objekt.

    Genauer: Die Zeiger haben den gleichen Wert und zeigen daher beide auf den selben C-String, wo auch immer der gerade liegen mag.

    Frage: was hindert dich, std::string zu benutzen (der sehr viel sicherer ist, mit dem einfachen char-pointer hast du gewisse Einschränkungen bezüglich des Speicherorts des C-Strings und/oder bekommst leicht Probleme beim speichern deiner Objekte in Containern)?


Anmelden zum Antworten