Diciamo che dichiaro un modello ma non lo riferimento mai in C++. Il compilatore fa qualcosa con esso nell'eseguibile? Occupa memoria di processo?Un modello C++ utilizza la memoria se non viene mai fatto riferimento?
risposta
No, non verrà prodotto alcun codice per un modello di funzione che non viene mai istanziato. Inoltre, non verrà prodotto alcun codice per una funzione membro non modello di un modello di classe che non viene mai chiamato.
In particolare, la dimensione del file eseguibile non sarà più grande, né si verificherà alcun sovraccarico di runtime.
(a meno che non si chiami esplicitamente il modello di classe) – aschepler
No, non lo è.
Le classi e le funzioni del modello non sono classi o funzioni effettive: sono invece indicazioni per il compilatore su come generare determinati tipi di classi e funzioni. Quando fai riferimento a un modello, il compilatore usa il modello per capire come generare il codice sorgente e compila il codice generato, una volta per ogni diversa parametrizzazione del modello.
L'unico sovraccarico nell'utilizzo di un modello è un po 'di tempo in più di compilazione, nessun grosso problema per qualsiasi computer costruito in qualsiasi momento dopo gli anni '80.
Ok grazie che ha senso – Iowa15
- 1. È possibile utilizzare un tipo non definito in una funzione modello C++ se la funzione non viene mai utilizzata?
- 2. In Python: come rimuovere un oggetto da un elenco se viene fatto riferimento solo a quell'elenco?
- 3. TaskScheduler.UnobservedTaskException non viene mai chiamato
- 4. Perché la memoria non viene mai rilasciata nella mia applicazione Tomcat JRuby?
- 5. È un oggetto inutile se viene fatto riferimento solo da dati inutili?
- 6. Dove viene memorizzata la variabile di riferimento
- 7. C++: memoria di riferimento rvalore
- 8. Come viene mappata la memoria quando si utilizza la forcella?
- 9. Distruttore C++: quando la memoria viene liberata?
- 10. OnInfoListener non viene mai chiamato
- 11. cos'è antlr3 e perché viene fatto riferimento di default in un progetto MVC4 VS2012?
- 12. Perché la specializzazione del mio modello viene compilata se non viene eseguita?
- 13. Se/Quando viene recuperata la memoria heap dealloca?
- 14. Java: come mai questo non viene compilato?
- 15. C11/C++ 11 di memoria Modello
- 16. Dove viene allocata la memoria quando creo questo array? (C)
- 17. C Valore # viene dichiarata ma mai usato
- 18. L'osservatore non viene mai rimosso da NSNotificationCenter
- 19. Il tipo 'System.Object' è definito in un assembly a cui non viene fatto riferimento - Applicazione Windows Store
- 20. Come viene fatto un merge in JGit?
- 21. C# deallocate la memoria a cui fa riferimento IntPtr
- 22. java riordino e la memoria modello
- 23. Perché viene generata un'eccezione di memoria insufficiente se la memoria è disponibile?
- 24. readable.on ('end', ...) non viene mai attivato
- 25. La funzione onPageScrollStateChanged di Android ViewPager non viene mai chiamata
- 26. il blocco di completamento di uiview animato non viene mai chiamato se la vista scompare
- 27. perché $ routeChangeSuccess non viene mai chiamato?
- 28. Quando viene copiato un vettore, quando viene passato un riferimento?
- 29. S3.putObject - la richiamata non viene mai chiamata
- 30. Hibernate @PostLoad non viene mai richiamato
No. (15 caratteri) – user7116