Em circunstâncias normais , os métodos em C + + não pode compartilhar um nome. Isso faz com que os erros , introduzindo a possibilidade de confusão em referências de métodos. Um programador que pretenda utilizar o mesmo nome de um método , mas que redefinir método baseado em parâmetros diferentes , tem duas opções . O programador pode sobrecarregar a função usando o mesmo nome, mas mudando os argumentos do método. Além disso, se o programador está usando uma classe derivada , ele ou ela pode substituir uma função de uma classe base para executar funções diferentes . Métodos Sobrecarga
Uma vez que um programador declara um método , esse nome geralmente não pode designar outro método com código diferente dentro dele. A exclusão a isso é quando os argumentos do método são diferentes. Por exemplo, um programador pode definir o método de " calcular " para tomar um inteiro como um argumento :
int calcular (int x)
De acordo com as regras do C + + , um outro método chamado " cálculo " o que leva um inteiro como um argumento não poderia existir , independentemente do código dentro do método. Mas , um outro método com o mesmo nome e argumentos diferentes poderiam existir :
int calcular (double x)
O tipo ou argumento quando o método é chamado iria decidir qual método é executado
.
Limitações
existem limitações quanto à forma como a sobrecarga método funciona em C + + . A fim de sobrecarregar um nome de método , os argumentos devem usar diferentes tipos de dados , ou diferem na quantidade de argumentos designado . Métodos que retornam valores diferentes, mas compartilham um nome e uma lista de argumentos idênticos, não são permitidos em C + +. Métodos com nomes idênticos e argumentos que só diferem por causa de um nome de tipo diferente (ou dando um tipo de dados existente um nome diferente ) também não são permitidos. Por exemplo :
typdef int fake_int ;
int write ( int x)
gravação duplo (int x)
int write ( fake_int x )
Nenhuma destas três definições de métodos seguem as regras de sobrecarga de método e retornará um erro .
Derivação
Outra maneira de sobrecarregar um método é através da classe derivação . Ao construir classe , um programador pode fazer uma funcionalidade classe herdar de outra classe. O herdando (derivado ) classe pode usar os métodos da classe que herda (classe base). A classe base (classe X) podem ter um método "print" definido. Outra classe (classe Y) que deriva da classe X também tem acesso à impressão. No entanto, a classe Y também pode definir a sua própria versão do método de impressão. Neste caso, o método de impressão executado será aquele definido na classe Y, a menos que o programador especifica que a versão de classe X de impressão deve ser executado.
Exemplos
um exemplo de um método redefinido através de uma classe derivada envolve duas classes. Em primeiro lugar, a classe base :
primeira classe (
público :
int x;
int returnX () { return
x ;
}
};
Então , uma classe derivada que redefine o método " returnX ()" :
classe II : Primeiro pública {
público :
int returnX () {
retornar x +1 ;
}
};
o "Segundo" classe tem acesso à variável "x" eo método " returnX ()" que fazem parte do "First" de classe. no entanto, segundo o método redefine returnX () em sua própria definição . Isto significa que quando um objeto da classe II chama o método () o returnX , o valor de retorno será x +1 .