Sto cercando il nome (i) di un concetto che ho sentito. So che non esiste in molti linguaggi di programmazione, ma penso che esista almeno in C ++.
Fammi provare a spiegare il concetto.
Supponiamo di voler definire una collezione generica in qualche linguaggio di programmazione, e voglio che questa collezione contenga elementi di tipo A e tipo B . Nei linguaggi orientati agli oggetti come C # o Java posso farlo in almeno due modi diversi:
- Definisci la raccolta per contenere elementi di tipo
object. - Crea un tipo (o interfaccia)
Ce modifica il codice in modo cheAeBereditino entrambi (o implementino)C. Quindi definisci la raccolta per contenere gli elementi di tipoC.
Entrambi i modi hanno i loro problemi:
- mi consente di inserire tutto nella raccolta anziché solo
AeB, che potrebbe non essere quello che voglio. - funziona solo se posso modificare il codice di A e B.
E il concetto che sto cercando consente un terzo approccio:
- definisce un "contenitore di tipi"
Tche contiene siaAcheBe può essere usato come un tipo regolare, in modo da poter creare una raccolta diT.
In questo caso, sarei in grado di inserire A e B nella raccolta, ma non mi sarebbe richiesto di modificare il codice di A e B .
Lo stesso concetto consente di definire metodi che richiedono un A o B come input e li elaborano allo stesso modo. Per esempio. potremmo voler definire un metodo Square che prende un int o un float x e restituisce x*x . Con questo concetto, non avremmo bisogno di definire due metodi (uno per int , uno per float ).