Visualizzazione dei risultati da 1 a 2 su 2

Discussione: I template C++

  1. #1

    I template C++

    Da poco ho scoperto quali sono le potenzialità dei template C++.

    Tra le altre cose, le guide dicono che le classi template, se dichiarate in un header file, anche il relativo codice e la definizione delle funzioni deve essere specificato nello stesso file (quindi si va a far friggere il concetto della programmazione modulare, secondo la quale le dichiarazioni devono essere separate dalle definizioni).

    Ma questa discussione dimostra esattamente il contrario: http://www.cplusplus.com/forum/articles/14272/

    Ovviamente c'è soltanto il difetto che nel file di definizione di una classe template devi poi dichiarare una spece di "istanza" esplicita, nel senso che bisogna dire al compilatore che si utilizzerà una specializzazione di un determinato tipo di quella classe template.

    Ma allora la mia domanda è: perché nessuna guida parla di questo metodo?

    P.S: Io l'ho provato ed effettivamente funziona alla grande!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    perché nessuna guida parla di questo metodo?
    Perché fondamentalemte è inutile. Se devi utilizzare il template al di fuori dei tipi esplicitati ottieni solo un errore di linker; in più per ogni istanza esplicita il compilatore deve scrivere il codice corrispondente anche se non usato (e non è detto che poi il compilatore decida di eliminare il codice non utilizzato). Risultato: si ingrossa il compilato per niente, si perde l'eventuale inlining delle funzioni, si aumenta la complessità di gestione (un template deve essere usabile da 1 a N tipi diversi), in quanto per ogni tipo che si intende usare occorre inserire la specializzazione nel .cpp corrispondente.

    (quindi si va a far friggere il concetto della programmazione modulare, secondo la quale le dichiarazioni devono essere separate dalle definizioni).
    Ma anche no. In Java dichiarazione e definizione delle funzioni coincidono (sempre che con le ultime versioni non abbiano introdotto la possibilità di farlo), per cui il concetto "programmazione modulare" lascia il tempo che trova.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.