Wann sollten wir Methode overloading vs Methode mit unterschiedlicher Benennung verwenden

8

Manchmal spürte ich, dass eine Überladung der Methoden Verwirrung stiften könnte.

%Vor% %Vor%

Eine Abhilfe hierfür ist.

%Vor%

Es ist jedoch auch keine gute Idee, eine Methode mit einem anderen Namen zu verwenden, um dieselbe Funktionalität zu erreichen. Darf ich wissen, was Sie in Betracht ziehen, zwischen Methodenüberladung oder Methode mit anderer Benennung zu wählen?

    
Cheok Yan Cheng 12.08.2010, 03:38
quelle

6 Antworten

17

Überladen sicher.

Okay, also ist es nicht "offensichtlich", welche Funktion aufgerufen wird (strittig) ... na und? Es ist dir egal, dass es verschiedene Arten von Parametern annehmen kann, es muss nur sein Ding tun. Wenn Sie auf der Grundlage unterschiedlicher Überladungen ein unterschiedliches Verhalten haben, haben Sie Überlastungen missbraucht und keinen Fehler in ihnen festgestellt.

Ein Beispiel für den Missbrauch von Überladungen:

%Vor%

Hoffentlich siehst du das Problem hier. Wenn zwei Funktionen denselben Namen haben, sollten sie dasselbe tun.

Noch besser, wenn Sie nur versuchen, die Möglichkeit zu ermöglichen, auf verschiedenen Arten zu arbeiten, verwenden Sie einfach eine Vorlage. (Dies ist wohl eine Form der Überladung.)

    
GManNickG 12.08.2010, 03:42
quelle
2

Ich würde dies in einen Kommentar schreiben, aber ich kann es noch nicht. Da Sie dies als C ++ markiert haben, dachte ich, ich sollte Ihnen sagen, dass Methoden normalerweise Funktionen in C / C ++ genannt werden.

    
scott77777 12.08.2010 03:58
quelle
2

Vermeiden Sie die Verwendung mehrerer virtueller Methoden mit demselben Namen. Oder Sie möchten sie wahrscheinlich alle in abgeleiteten Klassen überschreiben. Sehen Sie sich das folgende Beispiel an:

%Vor%     
kyku 12.08.2010 09:50
quelle
1

Wenn Sie im Prinzip dasselbe mit den beiden Funktionen tun, unterscheiden sie sich nur in ihren Typargumenten, dann ist es möglicherweise sinnvoller, Vorlagen zu verwenden und überhaupt keine Überladung zu verwenden.

    
andand 12.08.2010 03:47
quelle
0

Sicher im Falle von float vs. double sollten Sie nicht überladen, es ist einfach zu fehleranfällig. Ich habe gehört, dass die Leute argumentieren, dass man in solchen Fällen immer andere Namen verwenden sollte, um ganz eindeutig zu sein und dem Leser so klar wie möglich zu machen, und ich stimme dem zu.

    
bshields 12.08.2010 03:42
quelle
0

Überladene Funktionen ist der C ++ - Ansatz zum Gruppieren von Funktionen, die in ihrem Verhalten ähnlich sind.

%Vor%

Funktionen mit anderen Namen (z. B. do_it_with_a oder do_it_with_a_b) ist der C-Ansatz zum Gruppieren von Funktionen, die in ihrem Verhalten ähnlich sind.

Wenn sich Ihre Funktionen also in ihrem Verhalten unterscheiden, sollten Sie sie nicht überladen.

    
M. Sadeq H. E. 12.08.2010 10:04
quelle

Tags und Links