15.4.7 C++

La naturale evoluzione del C verso la programmazione ad oggetti è rappresentata dal liguaggio C++. Esso riprende tutte le caratteristiche della sintassi del C estendendola per introdurre i meccanismi necessari alla programmazione ad oggetti.

Vengono introdotte le classi come estensione delle strutture dati. Una classe può contenere sia dati (proprietà) che funzioni (metodi) e le classi possono essere ereditate da altre classi per costituire una gerarchia di classi ad albero. Un’istanza di una classe (cioè una variabile dichiarata di una certa classe) è un oggetto. Da ciò nasce anche il polimorfismo ovvero la capacità di una classe di comportarsi come una meno specifica (una delle classi da cui essa discende) in maniera tale che il codice si “adatta” al dato che gli viene fornito senza dover necessariamente variare il corpo del codice stesso.

È permesso l’overloading delle funzioni (o metodi), cioè è possibile che più funzioni appartenenti alla stessa classe abbiano lo stesso nome, ma il loro spazio dei nomi include anche i tipi degli argomenti. Quindi una funzione non è univocamente identificata dal proprio nome ma anche dal tipo dei suoi argomenti (se ne ha). Questo meccanismo estende il concetto di funzione andando incontro alle esigenze sempre più spinte dei programmatori.

È inoltre possibile definire delle classi parametriche per mezzo di quelli che vengono chiamati template. Ad esempio se si ha bisogno di una classe che implementa un proprio tipo di vettore, ma si vorrà poi utilizzare tale classe con vari tipi di dati come numeri interi, non interi, valori alfanumerici ..., non si potrà definire una classe vera e propria poiché questo implicherebbe la conoscenza del tipo di dato che si vorrà utilizzare. Si definirà allora un template, cioè una classe parametrica che permetterà di specificare di volta in volta il tipo di dato da utilizzare ed il compilatore adatterà la classe per funzionare con il tipo di dato specificato.

[da completare ...]