Costruttore

Article

August 17, 2022

Nella programmazione orientata agli oggetti basata su classi, un costruttore (inglese: Constructor, a volte abbreviato ctor), noto anche come: costruttore, costruttore, costruttore, costruttore) è una subroutine speciale in una classe che viene utilizzata per creare oggetti. Inizializza un oggetto appena creato e spesso accetta parametri per impostare variabili di istanza. I costruttori sono molto simili ai normali metodi di istanza; tuttavia, a differenza di altri metodi, i costruttori non hanno un tipo restituito, non sono ereditati e non hanno modificatori di ambito. Il nome della funzione di un costruttore è generalmente uguale al nome della classe a cui appartiene. È responsabile dell'inizializzazione dei membri dei dati dell'oggetto e della definizione delle invarianti di classe; fallisce quando le invarianti di classe non sono valide. Un costruttore scritto correttamente manterrà gli oggetti che produce in uno stato valido. Gli oggetti immutabili devono eseguire tutta l'inizializzazione all'interno del costruttore. La maggior parte dei linguaggi di programmazione consente l'overloading del costruttore: una classe può avere più costruttori che accettano diversi tipi di argomenti contemporaneamente. Alcuni linguaggi di programmazione consentono determinati tipi speciali di costruttori. I costruttori che utilizzano una singola classe per creare e restituire concretamente nuove istanze sono spesso astratti come metodi di fabbrica, un metodo che crea anche nuovi oggetti, ma utilizza più classi contemporaneamente, o uno schema di allocazione come il pool di oggetti per ottenere ciò. subroutine di un processo.

Digita

Costruttori parametrici

Un costruttore che accetta parametri è chiamato costruttore parametrizzato. Il numero di parametri può essere maggiore o uguale a uno. Ad esempio, in C++: quando si dichiara un oggetto con un costruttore parametrizzato, è necessario passare il valore iniziale come parametro del costruttore. In questo caso, il solito modo di dichiarare gli oggetti potrebbe non essere più applicabile. Le funzioni del costruttore possono essere chiamate in due modi: esplicito e implicito.

Costruttore predefinito

La maggior parte dei linguaggi di programmazione genera automaticamente costruttori predefiniti se nessun costruttore viene scritto in modo specifico durante la scrittura di una classe istanziabile. Le proprietà del costruttore predefinito variano da lingua a lingua. In alcuni casi inizializza tutte le variabili di istanza su 0 contemporaneamente o su qualsiasi altro valore; alcuni inizializzatori predefiniti non eseguono alcuna operazione. Alcuni linguaggi (Java, C#, VB .NET) costruiscono gli array predefiniti definiti da questo tipo di classe da riempire con riferimenti nulli. I linguaggi senza riferimenti null generalmente vietano la costruzione predefinita di array contenenti oggetti costruibili non predefiniti o richiedono che questi valori vengano inizializzati in modo specifico in fase di compilazione (C++):

Costruttore di conversione

I costruttori di conversione definiscono le operazioni che convertono da tipi definiti dall'utente o incorporati a tipi definiti dall'utente.

Costruttore di copia

Il costruttore di copia (inglese: costruttore di copia) è un costruttore speciale nel linguaggio di programmazione C++, che viene normalmente utilizzato per creare un oggetto completamente nuovo, che equivale a una copia di un oggetto esistente. Questo costruttore ha un solo parametro (argomento): il riferimento utilizzato per copiare l'oggetto (di solito modificato da const). I costruttori possono anche avere più parametri, ma tranne il primo parametro a sinistra, che è il tipo di classe di riferimento della classe, tutti gli altri parametri devono avere valori predefiniti.

Muovi Costruttore

Il costruttore Move (inglese: Move constructor) è un nuovo costruttore in C++11, che viene utilizzato per evitare operazioni non necessarie di allocazione di nuova memoria, copia e distruzione della vecchia memoria. Vedere l'introduzione nella voce C++11.

Sintassi

Le convenzioni di denominazione in Java, C++, C#, ActionScript e PHP 4 richiedono che una funzione di costruzione abbia lo stesso nome della classe in cui risiede. Il nome della funzione di costruzione suggerita da PHP 5 è __construct. Per garantire la compatibilità con le versioni precedenti, qualsiasi metodo con lo stesso nome del nome della classe verrà chiamato come costruttore quando non è possibile trovare il metodo __construct. A partire da PHP 5.3.3, questo approccio funziona solo per classi senza namespace. In Perl, i costruttori sono convenzionalmente chiamati "nuovi" e svolgono gran parte del lavoro di creazione di oggetti. Nel sistema di oggetti Moose di Perl, il costruttore (chiamato new) viene generato automaticamente e il programmatore può estenderlo specificando un metodo BUILD. In Visual Basic .NET, il costruttore è denominato New, che è un Sub. I costruttori in Python sono divisi in due metodi: __new__ e __init__. Il metodo __new__ è responsabile dell'allocazione dello spazio di archiviazione interno per l'istanza e accetta la propria classe come parametro (di solito denominata cls). Il metodo __init__ accetta l'istanza appena creata come parametro (1.