Zuhause Persönliche Finanzen C ++ Programmierung: Wann ist eine virtuelle Funktion nicht? - Dummies

C ++ Programmierung: Wann ist eine virtuelle Funktion nicht? - Dummies

Video: Programmieren in C Tutorial #09 - Funktionen und Rückgabewert 2025

Video: Programmieren in C Tutorial #09 - Funktionen und Rückgabewert 2025
Anonim

In C ++, nur weil Sie denken, dass ein bestimmter Funktionsaufruf zu spät gebunden ist, bedeutet das nicht, dass es ist. Wenn sie nicht mit den gleichen Argumenten in den Unterklassen deklariert werden, werden die Elementfunktionen nicht polymorph außer Kraft gesetzt, unabhängig davon, ob sie als virtuell deklariert sind oder nicht.

Eine Ausnahme von der identischen Deklarationsregel besteht darin, dass eine überschriebene Memberfunktion in einer Unterklasse einen Zeiger oder eine Referenz auf ein Objekt der Unterklasse zurückgeben kann, wenn die Memberfunktion in der Basisklasse einen Zeiger oder eine Referenz auf ein Basisklassenobjekt zurückgibt… Mit anderen Worten, die Funktion makeACopy () ist polymorph, obwohl sich der Rückgabetyp der beiden Funktionen unterscheidet:

Klasse Base {public: // gibt eine Kopie des aktuellen Objekts zurück base * makeACopy ();}; class SubClass: public Basis {public: // gibt eine Kopie des aktuellen Objekts zurück SubClass * makeACopy ();}; void fn (Basis & bc) {Basis * pCopy = bc. eine Kopie machen(); // weiter mit …}

In der Praxis ist das ganz natürlich. Eine makeACopy () -Funktion sollte ein Objekt vom Typ SubClass , zurückgeben, auch wenn es BaseClass:: makeACopy () überschreiben könnte.

Dieses Geschäft, bei dem stillschweigend entschieden wird, wann eine Funktion überschrieben wird und wann nicht, ist eine Fehlerquelle in C ++; so sehr, dass der 2011-Standard den Deskriptor override eingeführt hat, den der Programmierer verwenden kann, um seine Absicht anzugeben, eine Basisklassenfunktion zu überschreiben.

C ++ generiert einen Compiler-Fehler, wenn eine Funktion außer Kraft gesetzt wird, aber nicht aus irgendeinem Grund (wie einem nicht übereinstimmenden Argument) eine Basisklassenfunktion außer Kraft setzt, wie im folgenden Beispiel: >

Klasse Student {public: virtuell void addCourseGrade (doppelte Note);}; Klasse GradStudent: public Student {public: virtuell void addCourseGrade (Gleitkommazahl) override;};
Dieses Snippet generiert einen Fehler bei der Kompilierung, weil die Methode GradStudent:: addCourseGrade (float) für override deklariert wurde, aber nicht die Basisklassenfunktion Student:: addCourseGrade (double) außer Kraft setzt, weil die Argumenttypen don ' t passen.

Der Programmierer kann eine Funktion auch mit dem Schlüsselwort

final als nicht überschreibbar deklarieren, selbst wenn diese Funktion selbst eine frühere Basisklassenfunktion überschreibt, wie im folgenden zusätzlichen > PostDoc Klasse: Klasse GradStudent: public Student {public: virtuell void addCourseGrade (double grade) final;}; Klasse PostDoc: public GradStudent {public: virtuell void addCourseGrade (doppelte Note);}; Seit Student:: addCourseGrade () ist markiert

,

Die Deklaration von PostDoc:: addCourseGrade () erzeugt einen Fehler, weil sie versucht, die Student -Methode zu überschreiben.

Zusätzlich kann eine ganze Klasse deklariert werden

final:

Klasse GradStudent final: public Student Dies betrifft mehr als nur die virtuellen Methoden der Klasse. Eine

endgültige

-Klasse kann überhaupt nicht vererbt werden.

C ++ Programmierung: Wann ist eine virtuelle Funktion nicht? - Dummies

Die Wahl des Herausgebers

Web Marketing: Warum Suchmaschinen existieren - Dummies

Web Marketing: Warum Suchmaschinen existieren - Dummies

Wenn Sie verstehen, warum Suchmaschinen existieren, können sie für Sie in Ihrem Web-Marketing-Geschäft arbeiten. Also, hier ist eine kurze Lektion, warum Suchmaschinen existieren und wie Sie sie nutzen können, um Geld zu verdienen. Suchmaschinen liefern Relevanz. Relevanz bedeutet, dass Besucher auf Suchergebnisse klicken und zufrieden sind mit ...

Was sind Tür- und Informationsseiten? - dummies

Was sind Tür- und Informationsseiten? - dummies

Eine Doorway-Seite wird nur als Zugang von einer Suchmaschine zu Ihrer Website erstellt. Doorway-Seiten werden manchmal als Gateway-Seiten und Geisterseiten bezeichnet. Die Idee besteht darin, hoch optimierte Seiten zu erstellen, die von Suchmaschinen aufgenommen und indiziert werden und die mit etwas Glück gut ranken und somit den Traffic auf eine ...

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Eine Weiterleitung ist das automatische Laden einer Seite ohne Benutzereingriff. Sie klicken auf einen Link, um eine Webseite in Ihren Browser zu laden, und innerhalb von Sekunden verschwindet die geladene Seite, und eine neue wird angezeigt. Designer erstellen häufig Seiten für Suchmaschinen - optimierte, schlüsselwortreiche Seiten -, die Besucher auf die ...

Die Wahl des Herausgebers

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

, Wenn Kunden wissen, dass sie direkt mit ein Geschäft in den sozialen Medien, können sie aus einer beliebigen Anzahl von Gründen mit ihnen in Verbindung treten. Aber sobald sie merken, dass ein Problem mit dem Kundenservice oder einer Produktfrage über einen einzigen Tweet oder Beitrag angesprochen werden kann, ist es wahrscheinlicher, dass sie mit dem Unternehmen Geschäfte machen.

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Die heutige Technologie verändert die Art und Weise, wie wir Geschäfte machen blitzschnell. Auch der Social-Media-Handel bewegt sich blitzschnell, aber durch die Beobachtung von Erwähnungen und Fragen an die Community können Sie einen Eindruck davon bekommen, wie Ihr Markt über bevorstehende Veränderungen denkt. Auch andere Posts können Ihnen helfen, kritisches Feedback aus der Öffentlichkeit zusammenzustellen ...

Manage Social Media Commerce mit HootSuite - dummies

Manage Social Media Commerce mit HootSuite - dummies

HootSuite ist ein Social Media Management System zur Umsetzung von Outreach und Überwachung in sozialen Netzwerken über ein einziges webbasiertes Dashboard. Für Unternehmen wird HootSuite am häufigsten von Social-Media-Teams mit mehreren Agenten verwendet, aber auch viele Einzelanwender mögen es. Wenn Sie auf der Suche nach einer robusten Plattform sind, die alles an einem Ort hält, ...

Die Wahl des Herausgebers

Die 5 Kornsterne der Mittelmeer - Dummies

Die 5 Kornsterne der Mittelmeer - Dummies

Die Mittelmeerdiät ist in der Praxis des Habens begründet ein Vollkorn zu jeder Mahlzeit. Und nein, das bedeutet nicht, eine ganze Platte Vollkornspaghetti mit Fleischsauce zum Abendessen zu essen. Stattdessen machen die Menschen im Mittelmeerraum ihr Getreide zur Beilage oder schaffen durch die Zugabe von magerem Eiweiß mehr Gleichgewicht ...

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Der Verzehr von sieben bis zehn Portionen Obst und Gemüse pro Tag, wie sie für die mediterrane Ernährung empfohlen werden, mag sehr viel erscheinen, aber es muss keine so große Herausforderung sein. Wenn Sie nicht die Früchte und das Gemüse lieben, die spezifisch mit der Mittelmeerdiät verbunden sind, ist das okay! Essen Sie jede Art von Obst oder Gemüse, die Sie ...

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Sie haben vielleicht gedacht, dass der Oregano und Basilikum in Ihrer Spaghetti-Sauce lieferte nur einen deutlichen italienischen oder mediterranen Geschmack, aber diese kleinen Kräuter sind Pflanzen, was bedeutet, dass sie alle Arten von gesundheitlichen Vorteilen haben, die einen großen Einfluss auf Ihre allgemeine Gesundheit haben können. Einfache Gewürze wie Ingwer und Oregano enthalten Phytochemikalien, ...