9
Wie kann ich sowohl Skalar als auch Array im Smart Pointer verwenden?Verwendung von Skalar und Array im Smart Pointer
Die alte Art und Weise der Verwendung von neuen und löschen Zeiger:
int *p;
if (useScalar) {
p = new int;
} else {
p = new int[10];
}
if (useScalar) {
delete p;
} else {
delete[] p;
}
In Smart-Pointer, ich habe 2 Zeiger für jeden Skalar und Array-Zeiger verwenden:
std::unique_ptr<int> p1(new int);
std::unique_ptr<int[]> p2(new int[10]);
Wie kann ich abnehmen Verwenden Sie nur einen intelligenten Zeiger?
Sie können Ihren eigenen intelligenten Zeiger schreiben, der ein 'bool useScalar' speichert, um zu bestimmen, ob' delete' oder 'delete []' verwendet werden soll. – jotik
Könnten Sie 'p = new int [1]' zuweisen und so tun, als wäre es ein Zeiger auf Skalar? – dasblinkenlight
Sie könnten 'int [1]' als Skalar verwenden, vielleicht vereinfacht es auch andere Bereiche Ihres Programms ... – alain