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)?