mi c'è voluto molto tempo per rendersi conto di quanto sia importante e sottili con le variabili che:C++ modelli specifici dovuti alla progettazione del linguaggio
1) esiste nello stack
2) hanno i loro distruttori chiamato quando cadono fuori di scopo
sono.
Queste due cose permettono cose come:
A) RAII
B) refcounted GC
Abbastanza interessante, (1) & (2) non sono disponibili in lingue "minori" come C/Assemblea; né in linguaggi "superiori" come Ruby/Python/Java (dal momento che GC previene la distruzione prevedibile degli oggetti).
Sono curioso - quali altre tecniche sapete che sono molto specifiche del linguaggio C++, a causa delle scelte di progettazione linguistica.
Grazie!
Modifica: Se la risposta è "questo funziona in C++ & questo altro langauge", va bene lo stesso. Le cose che voglio imparare sono simili a:
Scegliendo di non avere alcune caratteristiche (come GC), otteniamo altre funzionalità (come RAII + distruzione prevedibile di oggetti). In quali aree del C++, scegliendo NON hanno caratteristiche che altri linguaggi "di livello superiore" hanno, C++ riesce a ottenere schemi che quelle lingue superiori non possono esprimere.
non credo che C++ ha GC, C# fa, naturalmente, ma che è una bestia diversa. – Hogan
Sì, la gestione delle risorse tramite RAII (con o senza conteggio ref) non è in realtà GC, è molto più generale. –
Più si verifica in momenti predeterminati, GC non è deterministico. – Hogan