C++: Sollte ich initialisieren Zeiger-Mitglieder zugeordnet sind, die im Konstruktor Körper auf NULL?

Angenommen ich habe:

//MyClass.h
class MyClass
{
  public:
    MyClass();

  private:
    Something *something_;
}

//MyClass.cpp
MyClass::MyClass()
{
  something_ = new Something();
}

Sollte ich initialisieren something_ auf NULL (oder 0) im Konstruktor mit Initialisierungsliste den Konstruktor MyClass? Oder ist das nicht nötig, denn ich bin mir zuweisen, um es in den Körper des Konstruktors? Was ist die empfohlene Praxis?

  • Warum nicht einfach den Zeiger initialisieren in den ersten Platz? MyClass::MyClass() : something_(new Something())
  • Oh, ist das die beste Vorgehensweise?
  • Immer lieber die Initialisierung der Zuweisung im Konstruktor Körper. Und verwenden Sie ein smart-pointer wie shared_ptr oder scoped_ptr anstatt einer nativen Zeiger so, dass die Bereinigung erfolgt automatisch, auch im Fall von Ausnahmen.
  • Also, wenn something_ werden nur intern verwendet, die von MyClass, ist es am besten geeignete zu verwenden shared_ptr oder scoped_ptr?
InformationsquelleAutor User | 2011-09-27
Schreibe einen Kommentar