Substituição de função C ++

C Function Overriding



Neste artigo, abordaremos a substituição de funções na linguagem de programação C ++. C ++ suporta polimorfismo de tempo de execução.

Na substituição de função, a classe filha redefine a função que já está definida em sua classe pai.







Ele permite que o programador forneça funcionalidade específica de classe derivada (mesmo que seja definida na classe base).



Agora, veremos alguns exemplos e compreenderemos o conceito de substituição de funções em C ++.



Exemplo 1

Eu defini duas classes no código de exemplo abaixo - uma classe base e uma classe derivada. A classe base tem uma função de membro, ou seja, disp (). A Derived_Class é herdada da Base_Class. A função disp () está presente em Base_Class e então redefinida em Derived_Class.





Na função main (), um objeto de Derived_Class, ou seja, d, é criado. Em seguida, chamamos a função disp () no objeto da classe derivada, para que a função na classe derivada seja chamada. A versão da classe base é ignorada aqui. Você pode ver abaixo a saída como função - disp () na classe derivada.

#incluir

usando namespace std;

// classe base
classe Base_Class
{
público:
vazioaproveitar()
{
custo<< 'função disp () na classe base.' <<endl;
}

};

//classe derivada
classe Derived_Class:public Base_Class
{
público:
vazioaproveitar()
{
custo<< 'função disp () na classe derivada' <<endl;
}
};

inta Principal()
{
Derived_Class d;
d.aproveitar(); // função disp () em objeto de classe derivada
Retorna 0;
}



Exemplo-2

Neste exemplo, veremos como chamar deliberadamente a versão da classe base da função por meio do objeto da classe derivada. Na definição da função da classe derivada, usamos o operador de resolução de escopo [::] para chamar a versão da classe base da função.

#incluir

usando namespace std;

classe Base_Class
{
público:
vazioaproveitar()
{
custo<< 'função disp () na classe base.' <<endl;
}

};

classe Derived_Class:public Base_Class
{
público:
vazioaproveitar()
{
Base_Class::aproveitar(); // Chame a versão da classe base de disp ()
}
};

inta Principal()
{
Derived_Class d;
d.aproveitar();
Retorna 0;
}

Exemplo-3

Este é outro exemplo de substituição de função. Neste exemplo, criamos uma classe pai - Animal e duas classes derivadas - Pato e Cachorro. A classe base, ou seja, a classe Animal, tem uma função de membro sound ().

Na classe derivada / classe filha, ou seja, Dog, redefinimos a mesma função, ou seja, sound (), para substituir sua definição de classe base. Da mesma forma, na outra classe derivada, ou seja, Duck, redefinimos a mesma função, ou seja, sound ().

Na função main (), criamos o objeto cachorro Cachorro e o pato Pato. Portanto, agora, quando chamarmos a função sound () para cachorro e pato, a versão de classe derivada da função sound () será chamada. Você pode ver a saída do programa conforme mostrado abaixo. Portanto, com a ajuda da substituição de função, podemos invocar a função específica da classe derivada.

#incluir

usando namespace std;

classe animal
{
público:
vaziosom()
{
custo<< 'Som de animal!' <<endl;
}

};

// Classe derivada - classe Dog
classe cão:Animal público
{
público:
vaziosom()
{
custo<< 'Som de cachorro - latido.' <<endl;
}
};

// Classe derivada - classe Duck
classe pato:Animal público
{
público:
vaziosom()
{
custo<< 'Som de pato - quack.' <<endl;
}
};


inta Principal()
{
Cão Cão;
Pato pato;

cão.som(); // som () de cachorro
Pato.som(); // som () de pato

Retorna 0;
}

Conclusão

Neste artigo, expliquei a substituição de funções em C ++ . A linguagem C ++ oferece suporte ao polimorfismo de tempo de execução. A substituição de função ajuda a atingir o polimorfismo de tempo de execução em C ++. Este artigo examinou o conceito de substituição de função e como obter polimorfismo de tempo de execução usando a substituição de função.