wake-up-neo.com

Unterscheiden Sie zwischen Funktionsüberladung und Funktionsüberschreibung

Unterscheidung zwischen Überladen von Funktionen und Überschreiben von Funktionen in C++?

44
Amol Joshi

Sie setzen eine Überladung ein, wenn Sie die ursprünglichen Typen für die Argumente in der Signatur einer Methode ändern.

Sie setzen eine Überschreibung ein, wenn Sie die ursprüngliche Definition einer Methode ändern.

12
user827992

Beim Überladen einer Methode (oder Funktion) in C++ können Funktionen mit demselben Namen definiert werden, sofern diese Methoden unterschiedliche Signaturen (unterschiedliche Parametersätze) haben. Das Überschreiben von Methoden ist die Fähigkeit der geerbten Klasse, die virtuelle Methode der Basisklasse umzuschreiben.

a) Beim Überladen gibt es eine Beziehung zwischen Methoden, die in derselben Klasse verfügbar sind, während beim Überschreiben eine Beziehung zwischen einer Superklassenmethode und einer Unterklassenmethode besteht.

(b) Überladen blockiert nicht die Vererbung von der Superklasse, während das Überschreiben die Vererbung von der Superklasse blockiert.

(c) Beim Überladen haben getrennte Methoden denselben Namen, während beim Überschreiben die Unterklassenmethode die Oberklasse ersetzt.

(d) Überladen muss unterschiedliche Methodensignaturen haben, während Überschreiben dieselbe Signatur haben muss. 

66
Prasad G

Das Überladen von Funktionen wird ausgeführt, wenn Sie die gleiche - Funktion mit verschiedenen Parametern haben möchten

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

Das Überschreiben von Funktionen wird ausgeführt, um der Funktion in der Basisklasse eine andere Bedeutung zu geben

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

Überschreiben bedeutet, eine andere Definition einer vorhandenen Funktion mit denselben Parametern anzugeben, Und Überladen bedeutet, eine andere Definition einer vorhandenen Funktion mit anderen Parametern hinzuzufügen.

Beispiel:

#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
}

Ausgabe:

I am derived (overridden)
I am overloaded
12
Jahid

1.Funktionsüberladung ist, wenn in einer Klasse mehrere Funktionen mit demselben Namen vorhanden sind . Funktionsüberschreibung ist, wenn die Funktion in der Basisklasse und in der abgeleiteten Klasse denselben Prototyp aufweist.

2.Funktionsüberladung kann ohne Vererbung auftreten . Funktion Überschreiben tritt auf, wenn eine Klasse von einer anderen Klasse geerbt wird.

3.Überladene Funktionen müssen sich entweder in der Anzahl der Parameter unterscheiden, oder der Parametertyp sollte unterschiedlich sein.

Weitere Informationen finden Sie unter dem folgenden Link. Dort finden Sie weitere Informationen zum Überladen und Überschreiben von Funktionen in c ++ https://googleweblight.com/i?u=https://www.geeksforgeeks.org/function-overloading -vs-function-overriding-in-cpp/& hl = de-IN

10
MERLIN THOMAS

Funktionsüberladung ist gleichnamige Funktion, jedoch unterschiedliche Argumente. Funktion über Reiten bedeutet die gleiche Namensfunktion und die gleichen Argumente

3
Parmar bharat

Function overloading - Funktionen mit demselben Namen, jedoch unterschiedlicher Anzahl von Argumenten

Function overriding - Begriff der Vererbung. Funktionen mit gleichem Namen und gleicher Anzahl von Argumenten. Hier soll die zweite Funktion die erste überschrieben haben

2
archana

bei Überladungsfunktion mit gleichem Namen und unterschiedlichen Parametern, während bei Überschreibungsfunktion mit gleichem Namen sowie gleichen Parametern die Basisklasse durch die abgeleitete Klasse (geerbte Klasse) ersetzt wird

2
xeem

Überladen bedeutet, dass es Methoden mit demselben Namen aber unterschiedlicher Signatur gibt. __ Überschreiben bedeutet, die virtuelle Methode der Basisklasse neu zu schreiben.

0
Praveen_Shukla

Zusätzlich zu den vorhandenen Antworten liegen überschriebene Funktionen in verschiedenen Bereichen. Überladene Funktionen haben jedoch denselben Umfang.

0
Dave

Das Überladen von Funktionen kann unterschiedliche Rückgabetypen haben, während das Überschreiben von Funktionen dieselben oder übereinstimmende Rückgabetypen haben muss.

0
Rashmit