Differenza di tipi di funzione-size() e funzioni artigianali

di Anonimizzato27285 il
7 risposte
Buonasera a tutti,
volevo chidere delucidazioni sull'argomento funzioni:

pongo subito esempio la funzione size() per quanto riguarda una stringa.
Per usare la suddetta funzione io uso la seguente sintassi (supponendo che la mia stringa si chiami "alfredo")

alfredo.size();
Però quando io definisco una funzione, ad esempio una funzione che mi somma tutti gli elemnti di array, io quell'array devo passarlo come parametro nel modo

somma(array);
Quindi non capisco come la funzione size() sia stata scritta affinchè riesca a trovare la dimensione della stringa senza che gli venga passata come parametro.

Che differenza c'è tra un funzione usata "col punto", quindi alfredo.size() (passatemi la descrizione "col punto") e una che ammette dei parametri?
Se io volessi scrivere la stessa funziona somma degli array scritta sopra senza passare l'array a parametro (quindi array.somma()) si potrebbe fare? Avrebbe senso?
Non capisco come trattare un funzione che ritorni un valore int, come la dimensione di una stringa, senza che venga passata come parametro.

Spero di non essere stato ripetitivo o prolisso ma volevo essere il più chiaro possibile.

Grazie mille!

7 Risposte

  • Hai studiato le classi di c++?
  • Quella NON E' una funzione, ma un METODO.

    Si chiama Programmazione Orientata agli Oggetti (OOP) !
  • Vi ringrazio molto per le risposte, ma no non ho ancora studiato le classi, sono fermo al concetto di puntatore e funzione per assimilarli bene.
    Devo dire che adesso sto molto meglio, infatti mi sembrava strana la cosa
  • Ma studi c o c++ ?
  • Quella chiamata alle funzione membro è trasformata in
    size(&alfredo)
    nelle funzioni membro vi è infatti un puntatore costante implicito e nascosto chiamato this.
    Dimostrazione:
  • oregon ha scritto:


    Ma studi c o c++ ?
    Sto studiando c++
  • Quindi tra un po' arriverai alle classi in dettaglio...
Devi accedere o registrarti per scrivere nel forum
7 risposte