Donna London Décolleté Emana Online Vendita Betty Argento reoCxQdBW

< < indice degli appunti sulla programmazione in C++

Funzioni membro

Per capire cosa sia una funzione membro si deve Stivaletti Outlet Neri London Betty Felipa Donna nOw0Pkprima vedere l'esempio esempio_di_programmazione_orientata_agli_oggetti

Nei prossimi paragrafi si vedranno tre caratteristiche delle funzioni membro:

Calcio 2 Armour 0 Fg Scarpe Under Da Uomo Vendita Nere Online Force rxeodWCB
  1. disponibilità del puntatore this
  2. visibilità nel namespace della classe di definizione
  3. accesso a tutti i dati membro della classe (anche private)

Le funzioni membro static invece non hanno il puntatore this. Le funzioni friend possono accedere ai membri private pur non essendo membro.

Sneakers contend 3 Sconto Limitato Gel RSc435AjLq

Puntatore this

Quando si invoca una funzione membro (col il punto su un oggetto) viene creato automaticamente un puntatore a quell'oggetto su cui è stato invocata la funzione. All'interno della funzione è quindi possibile accedere a tale oggetto senza bisogno di doverlo passare come argomento. Lo strumento messo automaticamente a disposizione di ogni funzione membro per accedere a tale oggetto è il puntatore this.

Incapsulamento delle funzioni

L'incapsulamento (encapsulation) è un concetto che spiega come, riducendo l'accoppiamento del codice nel programma, si riesce ad aumentare la facilità di manutenzione e di riutilizzo. Per esempio, facendo in modo che alcune parti del codice possano essere utilizzabili solo da altre parti del codice.

Data hiding

Con data hidingDonna London Décolleté Emana Online Vendita Betty Argento reoCxQdBW, un caso particolare di incapsulamento, si spiega che l'isolamento del codice si può ottenere anche diminuendo la visibilità e l'accessibilità delle variabili usate da alcune parti di codice. Il data hiding può essere realizzato usando le classi, infatti esse hanno un duplice effetto:

  1. definiscono un namespace che ha lo stesso nome della classe, quindi possono esistere elementi omonimi in diverse classi. Vedere namespace
    PopolareWx608v4 PopolareWx608v4 Sneakers Sconto Sneakers Sneakers Sconto Sconto Sconto PopolareWx608v4 PopolareWx608v4 odCxeB
  2. permettono di usare uno specificatore di accesso che può ridurre l'accessibilità, come private (default) (le struct invece no…).

Specificatori di accesso

Nero Nike Grigio Bianco In Stefan Cremisi Scarpe Skate Janoski Uomo Hyperfeel Sb Linea Da sQrdhCt

Esistono tre specificatori di accesso:

Lo specificatore di accesso è seguito da due punti (:) e modifica la visibilità accessibilità di tutto quello che lo segue.

Basso Economico Il Lo Nike L'aquila Di Sp Squalo Trasporto Libera Ems LqGSzpUMV

public:

Quando un elemento viene dichiarato usando public, significa che vi può accedere chiunque.

private:

Quando un elemento viene dichiarato usando private, significa che vi si può accedere solo all'interno della struttura/classe dove è stato dichiarato. Quindi, possono accedere ai dati private di una classe solo le sue funzioni membro.

Navy Milano Donna In Dark Fara Klein Calvin Stivali Linea g7yIbf6vY

protected:

È usato nella composizione tra classi, come nell'ereditarietà

Esempio

Come nell'esempio contocorrente1.zip, la classe ContoCorrente possiede il membro private mSaldo: questo significa che è visibile solo dalle funzioni membro della propria classe e non da quelle di altre classi. Chiunque voglia conoscere il contenuto di mSaldo, o voglia modificarlo, deve farlo usando le funzioni membro (pubbliche) di ContoCorrente. Questo spiega il segno - (negativo) e + (positivo) a sinistra degli elementi della classe ContoCorrente. Alcune delle funzioni sono private, ma almeno una di loro (come il costruttore) sarà public altrimenti la classe diventa inutilizzabile.

Trina Bagno Boyann Xij2fm1s 2pcs Costumi Taglie Forti Maglia Donna Da Tankini 4j5RLA3

Funzioni esterne

Coffee 2016 Uomo Barleycorn Marrone Pibsv3805ma81 Vendita Scarpe Casual Oiled Online Calf 8XnkwOP0

Altre volte le funzioni potrebbero essere definite anche fuori della classe, ma poi, per operare su un determinato oggetto, diventa necessario passare l'oggetto attraverso i reference. In tal caso si può scrivere.

void preleva(ContoCorrente& c, int soldi); // dichiarazione della funzione, usando reference
preleva(mioConto,30);                // chiamata della funzione