Explizites Aufrufen von Destruktoren in C
Während im Allgemeinen davon abgeraten wird, Destruktoren explizit aufzurufen, gibt es bestimmte Szenarien, in denen dies erforderlich wird. Ein solcher Fall wird im C 11-Standard N3485 Abschnitt 13.4.5 in Bezug auf Vorlagenargumente veranschaulicht.
Wie im Codeausschnitt gezeigt, ist es zulässig, einen Destruktor explizit für ein Objekt einer Klassenvorlagenspezialisierung aufzurufen und dabei explizit anzugeben die Vorlagenargumente:
<code class="cpp">template<class T> struct A { ~A(); }; void f(A<int>* p, A<int>* q) { p->A<int>::~A(); // OK: destructor call q->A<int>::~A<int>(); // OK: destructor call }</code>
Dieser explizite Aufruf ist notwendig, wenn es um Objekte geht, die mit der Platzierung new erstellt wurden. In solchen Fällen muss der Destruktor explizit aufgerufen werden, um den zugehörigen Speicher ordnungsgemäß freizugeben.
Neben der Platzierung löschen gibt es weitere begrenzte Szenarien, in denen explizite Destruktoraufrufe gerechtfertigt sind:
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die den Inhalt berücksichtigen: * Wann ist es notwendig, Destruktoren in C explizit aufzurufen? * Warum können Sie in C explizit einen Destruktor aufrufen? * Was sind die Sp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!