c++ – Können Funktionen mit demselben Namen und unterschiedlichen Parametern in einer abgeleiteten Klasse als virtuelle Funktionen deklariert werden?
世界只因有你
世界只因有你 2017-06-10 09:48:57
0
1
1332

Wenn die Basisklasse und die abgeleitete Klasse Funktionen mit demselben Namen haben, Unabhängig davon, ob die Anzahl der Parameter gleich oder unterschiedlich ist, ruft das Unterklassenobjekt immer direkt die Funktion mit demselben Namen der abgeleiteten Klasse auf Wenn Sie die gleichnamige Funktion der Basisklasse aufrufen möchten, müssen Sie den Basisklassenzeiger oder ein Anführungszeichen verwenden. Wenn Sie nun dieselbe Aufrufform verwenden möchten, können Sie entweder die Funktionsimplementierungsversion der abgeleiteten Klasse oder die Implementierungsversion der Basisklasse aufrufen. Sie müssen jedoch eine virtuelle Funktion verwenden. Der Lehrer sagte jedoch, dass dies nur die Funktionsprototypen sind können als virtuelle Funktionen deklariert werden, wenn sie genau gleich sind. Wie implementiert man dann
für Funktionen mit demselben Namen, die unterschiedliche Anzahlen oder Typen von formalen Parametern haben?

世界只因有你
世界只因有你

Antworte allen(1)
学霸

你可以这样定义然后在子类里按需要重新定义:

class Base {
public:
   virtual void print(int) = 0;
   virtual void print(float) = 0;
};

这个问题的根本在于C++如何找到函数,它必须知道函数的名字和参数,所以你必须把这两样都定义清楚了,返回值倒是可以模糊一些,比如copy函数在子类里可以返回子类。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage