virtual operator float()
Ich würde gerne wissen, die Bedeutung der virtual operator float()
- Methode den folgenden code
es ist verwendet für das Gießen ?
#include <iostream>
class Frac
{
protected:
int a, b;
public:
Frac(int x, int y):a(x),b(y)
{}
virtual operator float()
{ return (float)a/b; }
friend void Print(Frac var)
{ std::cout << var << endl; }
};
class TwiceFrac : public Frac
{
public:
TwiceFrac():Frac(1,2)
{}
virtual operator float()
{ return (float)a/b * 2; }
};
int main()
{
TwiceFrac obj;
Print(obj);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der code definiert eine implizite Konvertierung eines Objekts der Klasse zu einem
float
variable. Wenn Sie das tuncout << var << endl;
dieoperator float
aufgerufen wirdvar
- Objekt zu konvertieren, um diefloat
und diefloat
Wert, der zurückgegeben wird gedruckt.Den
virtual
Schlüsselwort ermöglicht es der abgeleiteten Klasse zu überschreiben, die Funktion in der Basisklasse definiert werden. Um die Vorteile dieses Polymorphismus, müssen Sie ändern Sie die Signatur derPrint
Funktion zu nutzen, die Referenz von Fanc (d.h.Print(Franc& var)
). Dann je nach den Typ des Objekts an die Funktion übergeben, entsprechendeoperator float
aufgerufen werden.Ja, du hast Recht. dieser operator verwendet für den Guss 🙂
Das wird nicht funktionieren, weil Sie Scheibe in der Print-Funktion.
Die Sie benötigen, um Ihre Print-Funktion einen Verweis. Am besten machen Sie es eine const-Referenz und machen Sie Ihre implizite Typ-Konvertierung-Methode auch const.