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 2024

Video: Programmieren in C Tutorial #09 - Funktionen und Rückgabewert 2024
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

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Jede leere Arbeitsmappe, die Sie öffnen, enthält ein Einzelblatt mit dem prosaischen Namen Sheet1. Um weitere Blätter zu Ihrer Arbeitsmappe in Excel 2013 hinzuzufügen, klicken Sie einfach auf die Schaltfläche Neues Blatt in der Statusleiste (die mit Pluszeichen in einem Kreis). Jedes Arbeitsblatt, das Sie mit der Befehlsschaltfläche Neues Blatt hinzufügen, ist ...

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Mit der bedingten Formatierung von excel 2010 können Sie das Aussehen von eine Zelle basierend auf ihrem Wert oder dem Wert einer anderen Zelle. Sie geben bestimmte Bedingungen an, und wenn diese Bedingungen erfüllt sind, wendet Excel die Formatierung an, die Sie auswählen. Sie können die bedingte Formatierung verwenden, um Datumsangaben zu suchen, die bestimmte Kriterien erfüllen (z. B. fallen auf ...

Die Wahl des Herausgebers

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

Es wird erwartet, dass festes Verständnis des mathematischen Grundwissens, wenn Sie das ASVAB nehmen. Multiplizieren und Dividieren von Brüchen sind zwei der Dinge, die Sie wissen müssen. Fraktionen multiplizieren Fraktionen multiplizieren ist sehr einfach. Alles, was Sie tun müssen, ist, die Zähler untereinander zu multiplizieren und die Nenner mit ... zu multiplizieren.

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

Sie müssen für die Word-Wissensprobleme bereit sein auf dem ASVAB. Das Format, das Sie unten sehen, ist ein gutes Beispiel dafür, was Sie finden werden, wenn Sie das ASVAB benutzen. Beispielfragen Wortwissenszeit: 11 Minuten für 35 Fragen Anleitung: Der Wortwissensubtest ist der dritte Untertest ...

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

Zeit für Sie, all Ihre ASVAB Vorbereitung zur guten Verwendung. Fragen Sie sich anhand der folgenden Beispieltestfragen, ob Ihr Leseverständnis auf dem neuesten Stand ist. Lesen Sie jeden kurzen Absatz, dem eine oder mehrere Fragen zu den in dieser Passage enthaltenen Informationen folgen. Achten Sie darauf, den Absatz sorgfältig zu lesen ...

Die Wahl des Herausgebers

Zoomen und Schwenken in AutoCAD - Dummys

Zoomen und Schwenken in AutoCAD - Dummys

AutoCAD erleichtert das Schwenken, indem es Bildlaufleisten und Echtzeit-Schwenken bietet. Beim Echtzeit-Panning (im Gegensatz zum Vorgabezeit-Panning?) Können Sie Objekte auf dem Bildschirm sehen, wenn Sie die Maus nach oben und unten oder vor und zurück bewegen. Natürlich bewegt sich der Standpunkt, nicht die Objekte. Sowohl das Schwenken als auch das Zoomen ändern die Ansicht ...

Mit AutoCAD LT 2005 DesignCenter - Dummies

Mit AutoCAD LT 2005 DesignCenter - Dummies

DesignCenter ist ein dummer Name für eine nützliche, wenn auch etwas ausgelastete Palette. Die DesignCenter-Palette ist praktisch für das Extrahieren von Daten aus allen Arten von Zeichnungen. Während sich die Eigenschaftenpalette mit Objekteigenschaften beschäftigt, behandelt die DesignCenter-Palette hauptsächlich benannte Objekte: Ebenen, Linientypen, Blockdefinitionen (dh Symboldefinitionen), Textstile und andere Organisationsobjekte ...

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Jeder Punkt in einer AutoCAD-Zeichnungsdatei kann identifiziert werden durch seine X-, Y-, Z-Koordinaten. (In den meisten 2D-Zeichnungen ist der Z-Koordinatenwert 0. 0.) Dieses Koordinatensystem wird in AutoCAD als Weltkoordinatensystem oder WCS bezeichnet. Koordinateneingabe Die direkteste Methode, um Punkte präzise einzugeben, ist die Eingabe von Zahlen mit dem ...