ich eine Klasse A haben die Membervariablen der Typen M und N. hat die Lebensdauer dieser Objekte sollen durch die Lebensdauer von A. begrenzt werdenIntelligente Zeiger vs. Wert als Membervariablen
Ich bin unter Berücksichtigung
class A {
M member1;
N member2;
}
gegen
class A {
std::unique_ptr<M> member1;
std::unique_ptr<N> member2;
}
ich bin nicht ganz sicher, was besser ist, da sie beide zu erreichen, was ich will. Die Lebensdauer der Mitglieder ist an das Objekt gebunden, und ich muss den Speicher nicht manuell verwalten. Was sind die Vor- und Nachteile jedes Setups?
Wenn es keinen Grund gibt, einen Zeiger zu haben, warum einen Zeiger haben? Alle Mitglieder sind im Destruktor "zerstört". – NathanOliver
Die * einzige * Zeit, in der Sie 'M' und' N' als Zeiger erzeugen möchten, wäre dort, wo sie sehr groß sind. Wenn Sie sie auf dem Stapel erstellen, könnte der Stapelspeicher leer sein. –
Verwenden Sie die dynamische Zuweisung nur habe einen guten Grund und einen guten Grund. Zum Beispiel, wenn Ihre Mitgliederobjekte gigantisch sind und den Stapel zerstören könnten. Andernfalls führen Sie den Overhead der dynamischen Zuordnung/Indirektion nicht sinnlos ein. –