Einzelnen Beitrag anzeigen

Robotiker
(Gast)

n/a Beiträge
 
#19

AW: Intelligente Objekte - automatische Freigabe von Referenzen

  Alt 5. Mär 2012, 17:09
Hallo,

wenn ich diesen Thread so lese, denke ich der Umgang mit VCL-Objekten ist im C++ Builder in diesem Sinne einfacher geregelt. Da ist z.B. sowas üblich

Code:
void __fastcall TfrmMain::btnTestClick(TObject *Sender)
{
    scoped_ptr<TStringList> list(new TStringList);
 
    list->Add(L"Eins");
    list->Add(L"Zwei");
    list->Add(L"Drei");
}
Wenn die Funktion verlassen wird, auch über eine Exception, löscht der Smartpointer die Stringlist.

Meine Überlegung war auch, dass Neulinge der OOP intuitiv davon ausgehen, dass solche Referenzen NIL werden. Das Objekt ist ja halt "weg".

Natürlich ist es möglich (das war mir auch damals klar), die Referenzen extra zu verwalten und Referenzen explizit zu nilen. Ich hätte mir jedoch eine Compilerlösung gewünscht, die das automatisch regelt.
Das wäre dann ein Fall für shared_ptr und weak_ptr, erstere sind referenzzählend, letztere werden ungültig, wenn kein shared_ptr mehr auf "ihr" Objekt zeigt.

Das Anlegen sähe, wenn der Compiler schon C++11 könnte, dann so aus:
Code:
  auto liste = make_shared(new TStringList);
(Das auto ermittelt den Typ der Variable entsprechend dem Ausdruck auf der rechten Seite der Zuweisung.)

Geändert von Robotiker ( 5. Mär 2012 um 17:30 Uhr)
  Mit Zitat antworten Zitat