web-dev-qa-db-fra.com

Différencier la surcharge de fonction de la surcharge de fonction

Faire la différence entre la surcharge de fonctions et la surcharge de fonctions en C++?

44
Amol Joshi

Vous mettez en place une surcharge lorsque vous modifiez les types d'origine des arguments dans la signature d'une méthode.

Vous mettez en place un remplacement lorsque vous modifiez la définition d'origine d'une méthode.

12
user827992

Surcharger une méthode (ou une fonction) en C++ permet de définir des fonctions du même nom tant que ces méthodes ont des signatures différentes (ensemble de paramètres différent). Le remplacement de la méthode est la capacité de la classe héritée à réécrire la méthode virtuelle de la classe de base.

a) En surcharge, il existe une relation entre les méthodes disponibles dans la même classe alors qu'en substitution, il existe une relation entre une méthode superclasse et une méthode sous-classe.

(b) La surcharge ne bloque pas l'héritage de la superclasse alors que la substitution bloque l'héritage de la superclasse.

(c) En surcharge, des méthodes distinctes partagent le même nom, tandis qu'en substitution, la méthode sous-classe remplace la superclasse.

(d) La surcharge doit avoir différentes signatures de méthode, tandis que la substitution doit avoir la même signature. 

66
Prasad G

La surcharge de fonction est faite lorsque vous voulez avoir la fonction même avec des paramètres différents

void Print(string s);//Print string
void Print(int i);//Print integer

Le remplacement de fonction est effectué pour donner un sens différent à la fonction dans la classe de base

class Stream//A stream of bytes
{
public virtual void Read();//read bytes
}

class FileStream:Stream//derived class
{
public override void Read();//read bytes from a file
}
class NetworkStream:Stream//derived class
{
public override void Read();//read bytes from a network
}
19
Anirudha

Remplacer signifie donner une définition différente d’une fonction existante avec les mêmes paramètres, Et surcharger signifie ajouter une définition différente d’une fonction existante avec des paramètres différents.

Exemple:

#include <iostream>

class base{
    public:
    //this needs to be virtual to be overridden in derived class
    virtual void show(){std::cout<<"I am base";}
    //this is overloaded function of the previous one
    void show(int x){std::cout<<"\nI am overloaded";} 
};

class derived:public base{
    public:
    //the base version of this function is being overridden
    void show(){std::cout<<"I am derived (overridden)";}
};


int main(){
    base* b;
    derived d;
    b=&d;
    b->show();  //this will call the derived overriden version
    b->show(6); // this will call the base overloaded function
}

Sortie:

I am derived (overridden)
I am overloaded
12
Jahid

1.La surcharge de fonction survient lorsqu'il existe plusieurs fonctions de même nom dans une classe . La surcharge de fonction survient lorsque la fonction a le même prototype dans la classe de base ainsi que dans la classe dérivée.

2.La fonction peut être surchargée sans héritage . La fonction est prioritaire lorsqu'une classe est héritée d'une autre classe.

3.Les fonctions surchargées doivent différer en nombre de paramètres ou le type de paramètres doit être différent . Les paramètres de fonction surchargés doivent être identiques.

Pour plus de détails, vous pouvez visiter le lien ci-dessous où vous trouverez plus d’informations sur la surcharge et le remplacement de fonctions en c ++ https://googleweblight.com/i?u=https://www.geeksforgeeks.org/function-overloading -vs-function-overriding-in-cpp/& hl = en-IN

10
MERLIN THOMAS

La surcharge de fonctions est une fonction du même nom mais des arguments différents. Fonction sur équitation signifie même nom fonction et identique aux arguments

3
Parmar bharat

Function overloading - fonctions avec le même nom, mais un nombre différent d'arguments

Function overriding - notion d'héritage. Fonctions avec le même nom et le même nombre d'arguments. Ici, on dit que la seconde fonction a remplacé la première

2
archana

dans une fonction de surcharge avec le même nom ayant des paramètres différents alors que dans une fonction de substitution ayant le même nom et les mêmes paramètres, remplace la classe de base par la classe dérivée (classe héritée)

2
xeem

Surcharger signifie avoir des méthodes portant le même nom mais avec une signature différente Remplacer signifie réécrire la méthode virtuelle de la classe de base .............

0
Praveen_Shukla

En plus des réponses existantes, les fonctions écrasées sont dans différentes portées; alors que les fonctions surchargées ont la même portée.

0
Dave

La surcharge de fonction peut avoir différents types de retour, tandis que la priorité de fonction doit avoir le même type ou des types de retour correspondants.

0
Rashmit