Newsgroup: it.comp.lang.c++
Titolo: Overriding

Ciao a tutti,
sono alle prime armi col C++, volevo sapere, in poche parole il
significato di overriding (e magari anche la sua traduzione in
italiano - va bene sovrascrivere ?
grazie,
		man
P.S.
Poi vi tormentero` con qualche domada sulle stringhe (o meglio array
di char).
-- "Cerco un centro di gravita` permanente..."

 italiano - va bene sovrascrivere ?
No, va meglio overriding, oppure, se vuoi, overloading.
(perche bisogna tentare di tradurre tutto e a tutti i costi???)
Ciao!
-- 
 Daniele
------------------------ Fuck The Monopoly ! -----------------------
             ______                           ____                  
            /_  __/                          / __/                  
             / /__     __  __  __           / /_                    
            / //_  /  /_  /   / / /\/\     /_  / /  / \/ \/     
           / //__ /_ /__ /__ /_/ /   /    __/ / /__/  /\ /\       
          /_/ Italia                     /___/                      
 
  -> 267 <- days and telecom's monopoly will be fucked forever !    
 
--------------------------------------------------------------------
 Daniele Orlandi - Utility Line Italia - 
http://www.xt.net
 
 Via Mezzera 29/A - 20030 Seveso (MI) - Italy - FAX: 
++39(362)540153
--------------------------------------------------------------------

 (perche bisogna tentare di tradurre tutto e a tutti i costi???)
Overloading means to generate code with parameter(s) type-dependent
tags. It means that functions 
int foo( int param ) 
int foo( float param )
and even
int foo( int param ) const
have a different (generated) names for linker. Have a look on c++ map
file.
The last two cases are essential for r- and l-value syntaxies.
Bye
		Alex

int foo( int param ) 
Allora:
Manrico chiedeva il significato di "overriding":
   detto in italiano anche "scavalcamento", l'overriding e' una tecnica che
consente di modificare o sostituire il comportamento di una funzione membro
all'interno di una classe; la nuova funzione membro della tua classe derivata
deve pero' conservare lo stesso numero e lo stesso tipo di variabili in
ingresso definite nella funzione originale;
Daniele spiega invece l' "overloading degli operatori", in inglese "operators
overloading", ovvero la possibilita' di ridefinire oppure di creare ex novo il
comportamento degli operatori nelle espressioni aventi come membri particolari
tipi di dato. Effettivamente, questa tecnica puo' essere considerata come un
particolare tipo di overriding.
Infine, Alexei spiega un'altra tecnica chiamata in italiano "polimorfismo", e
in inglese "polymorphism": essa consente di definire delle funzioni aventi lo
stesso nome ma diversi tipi di parametri in ingresso: in questo modo la
procedura chiamante utilizzera' la "stessa" funzione con un parametro di tipo
char o int, ecc., e pensera' il runtime a richiamare la funzione esatta a
seconda del tipo di dato. Francamente, con l'overriding c'entra poco! :)
MATRO
http://www.geocities.com/SiliconValley/8383
****** WARNING!! ******
To reply, remove the "*" from the email address.

Matro (matro@*
iol.it
) wrote:
: Che confusione! :))
Neanche tu hai le idee tanto chiare!
: Manrico chiedeva il significato di "overriding":
:    detto in italiano anche "scavalcamento", l'overriding e' una tecnica che
: consente di modificare o sostituire il comportamento di una funzione membro
: all'interno di una classe; la nuova funzione membro della tua classe derivata
: deve pero' conservare lo stesso numero e lo stesso tipo di variabili in
: ingresso definite nella funzione originale;
Su questo siamo d'accordo! Aggiungo solo che l'overriding e` piuttosto
diffuso anche in altri linguaggi: ad esempio il pascal dove si puo`
ridefinire una funzione all'interno di uno scope, nascondendo la
definizione attiva a quel momento.
: Daniele spiega invece l' "overloading degli operatori", in inglese "operators
: overloading", ovvero la possibilita' di ridefinire oppure di creare ex novo il
: comportamento degli operatori nelle espressioni aventi come membri particolari
: tipi di dato. Effettivamente, questa tecnica puo' essere considerata come un
: particolare tipo di overriding.
Per niente, l'overloading non e` affatto un tipo particolare di overriding.
Il termine overloading indica l'operazione con cui viene attribuito un
nuovo significato ad un identificatore di funzione, il significato
precedente non viene pero` nascosto (tant'e` vero che tutte le definizioni
della funzione precedentemente visibili e la nuova definizione sono
contemporaneamente accessibili). 
L'unica cosa che le due operazioni hanno in comune e` la sintassi simile
(una volta l'intenzione di eseguire l'overloading di una funzione doveva
essere esplicitamente comunicato).
: Infine, Alexei spiega un'altra tecnica chiamata in italiano "polimorfismo", e
: in inglese "polymorphism": essa consente di definire delle funzioni aventi lo
: stesso nome ma diversi tipi di parametri in ingresso: in questo modo la
: procedura chiamante utilizzera' la "stessa" funzione con un parametro di tipo
: char o int, ecc., e pensera' il runtime a richiamare la funzione esatta a
: seconda del tipo di dato. Francamente, con l'overriding c'entra poco! :)
Per niente!
Se proprio vogliamo semplificare, si puo` dire che
"polimorfismo = overriding di funzioni membro + late binding"
Se ridefinisci la funzione utilizzando tipo e numero di parametri
diversi, ottieni solo una versione overloaded della funzione (al
piu` virtuale), ma il polimorfismo richiede funzioni con lo stesso
prototipo altrimenti non sei in grado di trattare uniformemente le
istanze della gerarchia.
Saluti,
Paolo Marotta

essere esplicitamente comunicato).
In comune hanno anche il fatto che ridefiniscono una funzione di una classe, a
grandi linee concettuali sono quindi la stessa cosa... ribadisco che poi e'
ovvio che in realta' sono due cose differenti, senno' che ci sono a fare?
Comunque ripeto... sulle sottigliezze potremmo stare qui x anni... anche chi
scrive i manuali sono degli esseri umani (!) e noi leggiamo i manuali, no?
