Articles of distruttore

Come si fa a interrogare un pthread per vedere se è ancora in esecuzione?

Nel mio distruttore voglio distruggere un thread in modo pulito. Il mio objective è aspettare che un thread finisca di essere eseguito e POI distruggere il thread. L’unica cosa che ho trovato su come interrogare lo stato di un pthread è pthread_attr_setdetachstate ma questo ti dice solo se il tuo thread è: PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE Entrambi […]

Quando viene chiamato un distruttore C ++?

Domanda di base: quando un programma chiama un metodo distruttore di class in C ++? Mi è stato detto che è chiamato ogni volta che un object esce dal campo di applicazione o è sobject a una delete Domande più specifiche: 1) Se l’object è creato tramite un puntatore e quel puntatore viene successivamente cancellato […]

Devo chiamare esplicitamente il distruttore virtuale di base?

Quando si esegue l’override di una class in C ++ (con un distruttore virtuale) sto implementando nuovamente il distruttore come virtuale nella class ereditaria, ma devo chiamare il distruttore di base? Se è così, immagino che sia qualcosa del genere … MyChildClass::~MyChildClass() // virtual in header { // Call to base destructor… this->MyBaseClass::~MyBaseClass(); // Some […]

Creare un object: con o senza `new`

Possibile duplicato: Qual è la differenza tra l’istanziazione di un object usando nuovo vs. senza Questa è probabilmente una domanda di base e potrebbe essere già stata chiesta (ad esempio, qui ); eppure ancora non lo capisco. Quindi, lascia che te lo chieda. Considera la seguente class C ++: class Obj{ char* str; public: Obj(char* […]

chiamare distruttore in modo esplicito

Capisco che nella maggior parte dei casi, non dovremmo chiamare un distruttore in modo esplicito. Tuttavia, ho visto un esempio da C ++ 11 Standard N3485 Sezione 13.4.5 Argomenti del modello: Una chiamata al distruttore esplicita per un object che ha un tipo che è una specializzazione del modello di class può esplicitamente specificare gli […]

Qual è la differenza tra l’utilizzo di IDisposable vs un distruttore in C #?

Quando dovrei implementare IDispose su una class anziché su un distruttore? Ho letto questo articolo , ma mi manca ancora il punto. La mia ipotesi è che se implemento IDispose su un object, posso “distruggerlo” esplicitamente anziché aspettare che il garbage collector lo faccia. È corretto? Ciò significa che dovrei sempre chiamare esplicitamente Dispose su […]

Perché abbiamo bisogno di un distruttore virtuale puro in C ++?

Capisco la necessità di un distruttore virtuale. Ma perché abbiamo bisogno di un distruttore virtuale puro? In uno degli articoli del C ++, l’autore ha menzionato che usiamo il distruttore virtuale puro quando vogliamo fare un abstract di class. Ma possiamo fare un’estrazione di class rendendo qualsiasi membro funzioni come puro virtuale. Quindi le mie […]

shared_ptr magic :)

Il signor Lidström e io abbiamo avuto una discussione 🙂 L’affermazione di Lidström è che un costrutto shared_ptr p(new Derived); non richiede Base per avere un distruttore virtuale: Armen Tsirunyan : “Davvero? Il shared_ptr ripulirà correttamente? Potresti per favore in questo caso dimostrare come potrebbe essere implementato tale effetto?” Daniel Lidström : “Il shared_ptr usa […]

Quando dovrei creare un distruttore?

Per esempio: public class Person { public Person() { } ~Person() { } } Quando dovrei creare manualmente un distruttore? Quando hai avuto bisogno di creare un distruttore?

C ++: durata delle discussioni temporanee?

Quando si crea una nuova istanza di una MyClass come argomento per una funzione come questa: class MyClass { MyClass(int a); }; myFunction(MyClass(42)); lo standard rende eventuali beneficiari sui tempi del distruttore? Specificamente, posso supporre che verrà chiamato prima della prossima istruzione dopo la chiamata a myFunction() ?