Dies führt zu etwas, das als statischer Polymorphismus bezeichnet wird.
Angenommen, ich habe einen Algorithmus geschrieben, der eine Queue-Klasse verwendet. Es hat eine front() - Funktion, um das nächste Element der Warteschlange zu erhalten, und eine enqueue() - Funktion, die zum Ende der Warteschlange hinzugefügt wird. Nehmen wir an, ich habe entdeckt, dass diese Queue-Klasse schlecht und sehr langsam geschrieben ist, und ich würde lieber std :: vector verwenden, was viel schneller ist (ich weiß, dass es eine std :: queue gibt, das ist nur ein Beispiel). Wenn ich das erste Element eines std :: vectors nur mit v [0] erhalten könnte, müsste ich meinen Code durchgehen und alle meine Aufrufe von front() durch [0] ersetzen. Durch die Implementierung von front() kann std :: vector nun ein Ersatz für meine Queue-Klasse sein. Der einzige Code, den ich ändern muss, ist der Typ des Containers in meinem Algorithmus.
Interessanter ... Warum gibt es eine Front() wenn es bereits einen Anfang() gibt? – Inverse
@Inverse: weil die Containeradapter 'std :: queue' und' std :: stack '' front() 'haben, aber nicht' begin() '. –
Und um mit 'back()' konsistent zu sein, ist 'myvector [myvector.size() - 1]' nicht so geradlinig. – dalle