Operatorenüberladen



  • Man kann in C++ ja Operatoren, wie z.B. das + überladen.
    Kann man es auch so überladen, dass trotzdem konstante Werte übergeben werden?
    Also so überladen, dass z.B. (5 + 10) 30 ergibt?

    int operator+(const int a, const int b)
    {
        return (a+b) * 2;
    }
    

    scheint ja nicht zu funktionieren ... da soll man eine Klasse oder ein Enumerationstypen angeben; kann man das umgehen? Liegt das daran, dass ansonsten eine Rekursion in operator+ stattfinden würde?

    Kann man auch neue Operatoren definieren, wie z.B. (5 v 6) oder soetwas in der Art?



  • C-reator schrieb:

    kann man das umgehen?

    Nein. De Standard verbietet Überladungen von Operatoren, deren Parameter nur built-in Typen sind.

    Liegt das daran, dass ansonsten eine Rekursion in operator+ stattfinden würde?

    das liegt vor allem daran, dass man sich sonst auf garnichts mehr verlassen könnte und dass es in 95% der Fälle einfach Schwachsinn wäre, soetwas zu tun.


Anmelden zum Antworten