virtual-functions

In der objektorientierten Programmierung ist eine virtuelle Funktion oder virtuelle Methode eine Funktion oder Methode, deren Verhalten innerhalb einer erbenden Klasse durch eine Funktion mit derselben Signatur überschrieben werden kann. Dieses Konzept ist ein sehr wichtiger Teil des Polymorphismus-Teils der objektorientierten Programmierung (OOP).
2
Antworten

C ++: Bekämpfung von Polymorphismus Overhead

Ich weiß, dass Polymorphie einen merklichen Overhead hinzufügen kann. Der Aufruf einer virtuellen Funktion ist langsamer als der Aufruf einer nicht virtuellen. (Meine ganze Erfahrung ist über GCC, aber ich denke / hörte, dass dies für jeden Real...
06.11.2010, 02:24
3
Antworten

Die Ausgabe dieses Codeblocks ergibt für mich keinen Sinn

Der Laufzeittyp aller aufrufenden Instanzen ist D. Daher sollten alle Aufrufe von F () die in D deklarierte Methode F () sein. %Vor% Die Ausgabe ist: %Vor% Sollte die Ausgabe nicht lauten: %Vor%     
08.04.2013, 06:15
1
Antwort

Sind alle nicht verwendeten undefinierten Methoden erlaubt?

Hier ist eine Klasse mit einer undefinierten Methode. Scheinbar erlauben Compiler, Instanzen dieser Klasse zu konstruieren, solange die undefinierte Member-Funktion niemals aufgerufen wird: %Vor% Hier ist eine ähnliche Situation, aber eine,...
07.11.2014, 22:45
4
Antworten

Warum wird ein vptr benötigt, wenn die abgeleitete Klasse die virtuelle Funktion nicht überschreibt?

%Vor% Hier unterscheidet sich die Signatur der Funktion fn, die in der Klasse base definiert ist, von der Signatur der Funktion fn() , die in der Klasse der definiert ist, obwohl der Funktionsname gleich ist. Die in der class definie...
02.02.2012, 09:11
8
Antworten

C ++ - Polymorphie / Vererbungsfrage: Neudefinition von Basisfunktionen gegenüber virtuellen Funktionen

Ich weiß, dass abgeleitete Klassen das Basisklassenmitglied einfach "neu definieren" können Funktionen, und das, wenn diese Funktion eines abgeleiteten Klassenobjekts ist aufgerufen, wird die in der abgeleiteten Klasse definierte Funktion verwen...
03.02.2011, 02:26
1
Antwort

Wie stelle ich eine standardmäßige Debug-Implementierung bereit?

Es wird empfohlen, #[derive(Debug)] für die meisten von Ihnen erstellten Strukturen zu verwenden, um das Debuggen zu unterstützen. Dies ist jedoch nicht möglich, wenn Ihre Struktur einen Typ ohne Debug enthält, z. B. Merkmale. Aber wenn ic...
19.02.2017, 23:55
1
Antwort

Kann man die virtuelle Schnittstelle ohne Neukompilierung des Client-Codes erweitern?

Eine Bibliothek stellt eine Klasse mit virtuellen Funktionen bereit. Kann diese Klasse mit neuen virtuellen Funktionen erweitert werden, ohne Binärdateien neu zu übersetzen, die dynamisch mit der Bibliothek verknüpft sind? Ich glaube, das ist...
19.04.2011, 08:36
2
Antworten

Eine Standardmethode zur Vermeidung von virtuellen Funktionen

Ich habe eine Bibliothek, in der es viele kleine Objekte gibt, die jetzt alle virtuelle Funktionen haben. Es geht so weit, dass die Größe des Zeigers auf eine virtuelle Funktionstabelle die Größe der nützlichen Daten im Objekt übersteigen kann (...
13.05.2014, 09:55
2
Antworten

Wie unterdrücke ich die Generierung von C ++ - Vtable für reine virtuelle Klassen mit G ++?

Die Unterdrückung der C ++ - Vtable-Generierung kann in MSVC mit dem __declspec(novtable) -Attribut erfolgen. Es scheint jedoch, dass kein äquivalentes Attribut für die GNU C ++ - Compiler. Tatsache ist, dass das Verlassen der VTables für r...
03.12.2011, 22:17
2
Antworten

Größe der polymorphen Klasse, die virtuell abgeleitet wurde

Ich habe Schwierigkeiten, die Größe der folgenden Klassen zu untermauern, und was macht das aus? Ich benutze MSVS 2008 (VC 9.0 Compiler). Ich habe gelesen, dass, wenn ich keine virtuellen Funktionen deklariere (im folgenden Beispiel), Klasse D 2...
28.02.2014, 09:34