Oder weiß der Compiler, dass die Implementierung von Visit die Visitorinstanz nicht verändert? Was passiert, wenn Visit die Istanz verändert?
Genau das ist
const
: Eine Schreibschutz-Markierung. Das erlaubt natürlich gewisse Compileroptimierungen, genauer gesagt kann einfach ein Pointer auf das Original übergeben werden, statt dass eine Kopie auf dem Stack angelegt werden muss.
Zu deiner 2. Frage: Das geht nicht, der Compiler schmeißt dann einen Fehler.
Im Grunde ist
const
das gleiche wie
var
, nur mit dem Unterschied, dass das Original garantiert nicht verändert wird.