7 Unterschied zwischen virtueller Funktion und Inline-Funktion in C++

Contents

Was ist eine virtuelle Funktion?

Eine virtuelle Funktion ist eine Memberfunktion innerhalb der Basisklasse, die wir in einer abgeleiteten Klasse neu definieren. Es wird mit dem Schlüsselwort virtual deklariert. Wenn eine Klasse, die eine virtuelle Funktion enthält, geerbt wird, definiert die abgeleitete Klasse die virtuelle Funktion neu, um ihren eigenen Anforderungen gerecht zu werden. Virtuelle Funktionen stellen sicher, dass die richtige Funktion für ein Objekt aufgerufen wird, unabhängig von der Art der Referenz (oder des Zeigers), die für den Funktionsaufruf verwendet wird. Funktionen werden mit einem virtuellen Schlüsselwort in der Basisklasse deklariert. Sie werden hauptsächlich verwendet, um Laufzeitpolymorphismus zu erreichen.

Was Sie über virtuelle Funktionen wissen müssen

  • Die virtuelle Funktion muss im öffentlichen Abschnitt der Klasse deklariert werden.
  • Die virtuelle Funktion kann nicht statisch sein, oder die Freundesfunktion kann auch nicht die virtuelle Funktion einer anderen Klasse sein.  
  • Die virtuelle Funktion wird in der Basisklasse definiert und in der abgeleiteten Klasse überschrieben. Es ist nicht zwingend erforderlich, dass die abgeleitete Klasse überschreibt, in diesem Fall wird die Basisklassenversion der Funktion verwendet.
  • Virtuelle Funktionen verringern die Effizienz des Codes.
  • Die virtuelle Funktion wird hauptsächlich verwendet, um Laufzeitpolymorphismus zu erreichen.
  • Die virtuelle Funktion kann aus einem virtuellen Destruktor bestehen, aber keinen virtuellen Konstruktor haben.
  • Virtual kann für dynamische Verknüpfungen verwendet werden.

Was ist eine Inline-Funktion?

Inline-Funktion ist eine normale Funktion, die durch das Schlüsselwort inline definiert wird, eine kurze Funktion, die vom Compiler erweitert wird und deren Argumente nur einmal ausgewertet werden. Wenn eine Inline-Funktion aufgerufen wird, ersetzt der Compiler alle aufrufenden Anweisungen zur Laufzeit durch die Funktionsdefinition. Jedes Mal, wenn eine Inline-Funktion aufgerufen wird, generiert der Compiler eine Kopie des Codes der Funktion, um den Funktionsaufruf zu vermeiden. Inline-Funktionen sparen den Aufwand für das Pushen und Popping von Variablen auf dem Stack während Funktionsaufrufen.

Was Sie über die Inline-Funktion wissen müssen

  • Inline-Funktion ist eine normale Funktion, die durch das Schlüsselwort inline definiert wird.
  • Die Inline-Funktion kann auch nicht statisch sein.
  • Inline-Funktionen sind die kurzen Funktionen, die automatisch zu Inline-Funktionen gemacht werden, ohne das inline-Schlüsselwort innerhalb der Klasse zu verwenden.
  • Inline-Funktionen werden verwendet, um die Effizienz von Code zu erhöhen.
  • Die Inline-Funktion wird verwendet, um einen Polymorphismus zur Kompilierzeit zu erreichen.
  • Die Inline-Funktion kann auch aus einem Inline-Konstruktor bestehen.
  • Inline-Funktion wird verwendet, um den Funktionsaufruf-Overhead zu reduzieren. 

Unterschied zwischen virtueller Funktion und Inline-Funktion in Tabellenform

VERGLEICHSGRUNDLAGE  VIRTUELLE FUNKTION  INLINE-FUNKTION
BeschreibungDie virtuelle Funktion muss im öffentlichen Abschnitt der Klasse deklariert werden.  Inline-Funktion ist eine normale Funktion, die durch das Schlüsselwort inline definiert wird.  
NaturDie virtuelle Funktion kann nicht statisch sein, oder die Freundesfunktion kann auch nicht die virtuelle Funktion einer anderen Klasse sein.   Die Inline-Funktion kann auch nicht statisch sein.  
DefinitionDie virtuelle Funktion wird in der Basisklasse definiert und in der abgeleiteten Klasse überschrieben. Es ist nicht zwingend erforderlich, dass die abgeleitete Klasse überschreibt, in diesem Fall wird die Basisklassenversion der Funktion verwendet.  Inline-Funktionen sind die kurzen Funktionen, die automatisch zu Inline-Funktionen gemacht werden, ohne das inline-Schlüsselwort innerhalb der Klasse zu verwenden.  
WirkungVirtuelle Funktionen verringern die Effizienz des Codes.  Inline-Funktionen werden verwendet, um die Effizienz von Code zu erhöhen.  
VerwendenDie virtuelle Funktion wird hauptsächlich verwendet, um Laufzeitpolymorphismus zu erreichen.  Die Inline-Funktion wird verwendet, um einen Polymorphismus zur Kompilierzeit zu erreichen.  
Zerstörer & KonstruktorDie virtuelle Funktion kann aus einem virtuellen Destruktor bestehen, aber keinen virtuellen Konstruktor haben.  Die Inline-Funktion kann auch aus einem Inline-Konstruktor bestehen.  
FunktionVirtual kann für dynamische Verknüpfungen verwendet werden.  Inline-Funktion wird verwendet, um den Funktionsaufruf-Overhead zu reduzieren

osky