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 .