Das überladen von Funktionen — zwei Funktionen unterscheiden sich nur durch eine default-parameter

class A{
    public:
        void foo(int x)
        {
            cout << "foo with one\n";
        }

        void foo(int x, int y=10)
        {
            cout << "foo with two\n";
        }
};

int main()
{
    A a;
    a.foo(1);   //error?
}

So, warum kann ich nicht überlasten void foo(int) mit einer Funktion mit einem default-parameter?

Die Funktion sollte aufgerufen werden, im Fall von foo(10)? Wenn Sie diese Frage beantworten, werden Sie sehen, Ihre Lösung ist redundant.
Warum wollen Sie das tun? Haben Sie wirklich zwei verschiedenen die Funktionen mit dem gleichen Namen, die aufgerufen werden kann mit den gleichen Argumenten und unterschiedliche Aufgaben? Wenn Sie zwei verschiedene Implementierungen in Erwägung ziehen, andere Namen, andere Entwickler werden froh sein, zu erkennen, die von Namen, was Sie tun...
naja, eigentlich keine. Aber das gerade in den Sinn gekommen, 🙂

InformationsquelleAutor Alcott | 2012-03-30

Schreibe einen Kommentar