Una volta che un programmatore dichiara un metodo , che il nome di solito non può designare un altro metodo con codice diverso al suo interno . L'esclusione di questo è quando gli argomenti del metodo sono diversi . Ad esempio, un programmatore potrebbe definire il metodo di " calcolare " per prendere un intero come argomento :
int calcola ( int x ) per
Secondo le regole del C + + , un altro metodo denominato " calcolare " che prende un intero come argomento non potrebbe esistere , indipendentemente dal codice all'interno del metodo . Ma , un altro metodo con lo stesso nome e diverse argomentazioni potrebbe esistere :
int calcola (double x ) per
Il tipo o argomento quando viene chiamato il metodo sarebbe decidere quale metodo viene eseguito
. esistono
Limitazioni
Limitazioni di come metodo di overloading opere in C + + . Al fine di sovraccaricare un nome metodo , gli argomenti devono utilizzare diversi tipi di dati , o differiscono nella quantità di argomenti designati. I metodi che restituiscono valori diversi , ma condividono un nome e lista di argomenti identici , non sono ammessi in C + + . I metodi con lo stesso nome e gli argomenti che si distinguono a causa di un nome di tipo diverso (o di dare un tipo di dati esistente un nome diverso) non sono ammessi. Per esempio :
typdef int fake_int ;
int write ( int x ) per
doppia scrittura ( int x ) per
int write ( fake_int x ) < br
Nessuna di queste tre definizioni di metodo > seguire le regole del metodo sovraccarico e restituirà un errore .
derivazione
un altro modo per sovraccaricare un metodo è attraverso la derivazione di classe . Nella costruzione di classe , un programmatore può fare una classe eredita le funzionalità da un'altra classe . La classe che eredita (derivato ) può utilizzare i metodi della classe da cui eredita ( classe base ) . Una classe di base ( classe X) potrebbe avere un metodo di "stampa" definito . Un'altra classe ( classe Y ) che deriva dalla classe X ha anche accesso a stampare. Tuttavia, classe Y potrebbe anche definire una propria versione del metodo di stampa. In questo caso, il metodo di stampa eseguito sarà quello definito in classe Y , a meno che il programmatore specifica che la versione X classe di stampa deve essere eseguita.
Esempi
un esempio di un metodo ridefinito tramite una classe derivata coinvolge due classi . In primo luogo , la classe base :
classe
Prima (
pubblico :
int x ;
int returnX ( ) {
ritorno x ;
}
} ;
Poi , una classe derivata che ridefinisce il " returnX ( ) " metodo :
classe
Seconda : pubblica First {
pubblico :
int returnX ( ) {
ritorno x +1;
}
} ;
la classe "Secondo" ha accesso alla variabile " x " e il metodo " returnX ()" che fanno parte della classe di "First" . Tuttavia, secondo il metodo ridefinisce il returnX ( ) in una propria definizione . Ciò significa che quando un oggetto di seconda classe chiama il metodo returnX ( ) , il valore restituito sarà x +1 .
Programmazione © www.354353.com