Benutzerdefinierte Konvertierungen in C ++

or kurzem habe ich meine Kopie von @ durchgesehedie C ++ - Taschenreferenz von O'Reilly Media und ich war überrascht, als ich auf einen kurzen Abschnitt und ein Beispiel zur benutzerdefinierten Konvertierung für benutzerdefinierte Typen stieß:

#include <iostream>

class account {

    private:
        double balance;

    public:
        account (double b) { balance = b; }

        operator double (void) { return balance; }
};

int main (void) {

    account acc(100.0);
    double balance = acc;

    std::cout << balance << std::endl;

    return 0;
}

Ich programmiere seit einiger Zeit in C ++ und dies ist das erste Mal, dass ich eine solche Überladung von Operatoren erlebt habe. Die Beschreibung des Buches zu diesem Thema ist etwas kurz und lässt mich einige unbeantwortete Fragen zu dieser Funktion offen:

Ist dies ein besonders dunkles Merkmal? Wie gesagt, ich programmiere schon eine Weile in C ++ und dies ist das erste Mal, dass ich darauf gestoßen bin. Ich habe nicht viel Glück gehabt, vertiefendes Material zu diesem Thema zu finden.Ist das relativ portabel? (Ich kompiliere auf GCC 4.1)

Können benutzerdefinierte Konvertierungen in benutzerdefinierte Typen durchgeführt werden? z.B

operator std :: string () {/ * code * /}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage