Strutture e campi funzione
Consentire la riunione di campi/funzioni all'interno delle strutture per fondare in un'unica entità la rappresentazione dei dati e le operazioni definite su questi. Le strutture non emettono incapsulamento. Incapsulamento: i dettagli di un oggetto non devono essere accessibili, se non ai soli metodi dell'oggetto stesso.
Sintassi della classe
Un oggetto è dichiarato tramite dichiarazione di classe:
< class Class > Public: dichiarazioni visibili solo alla classe dice a ciò che sarà l'interfaccia di una classe;
Esempio: bookmaker...
Private
L'accesso ai campi è possibile solo dai metodi della classe e le keyword di default.
Definizione delle funzioni membro
Può essere eseguita o dentro la classe specificandone il corpo (implica inline) o avere solo la firma dentro la classe e definire la funzione fuori. Se voglio una funzione inline devo specificarlo.
Costruttori
Per inizializzare un'istanza di classe è un metodo con il nome e lo stesso delle dichiarazioni. Non accetta né chiamata nulla, nemmeno void. Scopo: inizializzano gli elementi dello stack.
Costruttore di default
Class() : classe(){}; Viene chiamato dal compilatore quando il programmatore non utilizza esplicitamente un costruttore nella dichiarazione di un oggetto. Se non viene definito alcun costruttore, il compilatore fornisce quello di default. Se non voglio il costruttore, lo definisco esplicitamente: non erediterà di default.
Costruttore di copia
Viene invocato quando un nuovo oggetto viene inizializzato in base al contenuto di un altro oggetto. Possesse Class(Class& ClassCopy&oggetto); Se non viene definito il costruttore di copia, il compilatore, quando una classe contiene puntatori, è meglio definirlo esplicitamente per evitare problemi di condivisione di zone di memoria.
Costruttori archetipi
Sono degli operatori di conversione di tipo. Convertono l'esponente in un'istanza della classe.
Distruttori
Poiché ogni oggetto ha una durata (lifetime) è necessario un metodo che permetta una corretta distruzione dell'oggetto stesso. Funziona: no overloading. Viene chiamato alla dereferenziazione della risorsa. Se non viene definito il costruttore di default, serve il compilatore: non tiene conto di aree di memoria allocate dinamicamente. Annova il distruttore. Il distruttore si chiama alla fine di ogni blocco che chiama un oggetto o gli è stato dato un new. Ogni classe ha un unico distruttore.
Membri static
Per l'esecuzione, gli attributi statici hanno. A tenere a risorsa.... Viero della dalla resurres costo risorsa. Se uhá metodo. Invece irromio un costruttore esperienza in ritorogo, che l'inizializzazione congetto ché di riservista di lass.
Strutture e campi funzione
Consentire la ricerca di campi funzione all'interno della struttura per fondere in un'unica entità la rappresentazione dei dati e le operazioni definite su questi. Le strutture non permettono incapsulamento. Incapsulamento: i dettagli di un oggetto non devono essere accessibili, se non ai soli metodi dell'oggetto stesso.
Sintassi della classe
Un tipo oggetto è dichiarato tramite dichiarazione di classe class Class { } Public: - dichiarazioni visibili sia alla classe sia a chi crea l'istanza; l'implementazione di questi;
Private
L'accesso ai campi è possibile solo dai metodi della classe. Le keyword di default.
Definizione delle funzioni membro
Può essere eseguito all'interno della classe specificandone il corpo (implicitamente inline). Avere solo il nome dentro la classe e definire la funzione fuori: esecuzione. Se voglio una funzione inline devo specificarlo.
Costruttori
Per inizializzare un'istanza di classe Metodo con nome e lo stesso della classe -> non associabile nemmeno con l'elemento void. Scopo: inizializzare i dati delle classi.
Costruttore di default
Class(); Class(). Viene chiamato dal compilatore quando il programmatore non utilizza esplicitamente un costruttore nella dichiarazione di un oggetto. Se non viene definito alcun costruttore, il compilatore fornisce quello di default. Se non voglio il costruttore finito, ne devo definire esplicitamente. -> non correggerà di default.
Class (TClass(const &int a, int b));
Inks m(a), n(b); Drinks db(a), db(b).
Costruttore di copia
Viene invocato quando un nuovo oggetto viene inizializzato in base al contenuto di un altro oggetto. Class (Class < Class > oggetto). Se non viene definito un costruttore al compilatore. Quando una classe contiene puntatori, meglio definirlo esplicitamente per evitare problemi di condizioni di gare di memoria.
Costruttori argheto
Sono degli operatori di conversione di tipo. Convertono l'argomento in un'istanza della classe.
Distruttori
Poiché ogni oggetto ha una durata (lifetime), è necessario un metodo che permetta una corretta distruzione dell'oggetto stesso: non avere libero accesso della correttezza dell'allocazione delle risorse. Se non viene definito un distruttore, il compilatore non tiene conto di aree di memoria allocate dynamicamente ancora. Se definito, un distruttore è chiamato alla fine di ogni blocco assegnato, un distruttore seguente di uno stato, uno new (se elimini un blocco). Classi che hanno un unico distruttore.
Member Static
Per i quali ogni istanza ha un valore dove puntare e risorse. Attributi statici sono delle classi e possono essere inviate in lettura o in scrittura. NB: utilizzare la ricezione in maniera più veloce e viene eseguita un'inizializzazione di ogni istanza della classe.
Inizializzazione
Eseguita successivamente alla sua dichiarazione e al di fuori della dichiarazione di classe. Class MyClass { Static int counter; Dopo l'accesso avviene come normale attributo int MyClass::counter=0.
Metodi statici
La keyword static vincola il metodo ad accedere solo agli attributi statici della classe. È necessario solo nella dichiarazione. Dichiarando un metodo static si accresce che il metodo non accede ad altre categorie di attributi: Vi si accede con MyClass::metodoStatic(). I metodi statici non hanno bisogno del puntatore all'istanza della classe passato dal compilatore. No per costruttori e distruttori.
Membri const
Attribuiti const
Viene allocato per ogni istanza come un normale attributo il cui valore viene stabilito all'atto della creazione dell'istanza stessa. Non può mai cambiare. Valore attribuito tramite la lista di inizializzazione. Perché l'assegnamento è valido.
Funzioni const
La const non accede in alcun modo a qualsiasi attributo della classe. Solo per metodi identici di accesso int fnc(const) const { }. Va messo sia nella dichiarazione che nella definizione. No per costruttori e distruttori. Per attribuiti const int size = 20; Senza costruttori non potete fare =20;
Friend
Per far sì che una funzione o un membro possa accedere direttamente ai membri privati della classe. Ti permette accesso quando hai necessità di 2 o più classi che devono cooperare. Per l'overloading degli operatori per estendere le operazioni di I/O alla classe. Quindi una funzione friend può accedere ai membri privati della classe. Può essere applicato anche a un identificatore di classe → abilita una classe intera.
L'overloading degli operatori
Non puoi definire nuovi operatori → per prevenire ambiguità. Possono farvi operazioni o operatori già esistenti nel linguaggio. Non posso modificare: il precederente, l'associatività, il numero degli operandi. Non è consentito overload di: * sizeof & . +. Possono dichiararli come funzione globale [] {} devono essere ridefiniti con funzioni membri non statiche.
-
Programmazione I - esercizi
-
Appunti corso Programmazione 2
-
Programmazione 2
-
Programmazione - Esercitazione