Unterschied zwischen 'T &' und 'const T &' für die Klasse all-const

8

Angenommen, ich habe eine Klasse wie diese:

%Vor%

Gibt es nun einen praktischen Unterschied zwischen dem Zugreifen auf die Objekte dieser Klasse durch Foo& , im Gegensatz zu const Foo& , außer dass diese zwei unterschiedliche Typen sind?

Es sollte keinen Unterschied beim Zugriff auf seine Felder geben, da sie const sind, daher wird auf sie trotzdem über const T& zugegriffen.

Aber gibt es irgendeinen Unterschied, wenn es um die Klasse als Ganzes geht? Vielleicht etwas mit Vorlagen zu tun? Alles?

Nun, da templatetypedef eine nette Antwort geschrieben hat , die in diesem Fall leider nicht hilfreich ist, denke ich, dass es wäre schön zu betonen, dass es sehr viel um geht, was man tun kann, wenn man bereits eine Referenz hat (beachte alle diese "Zugriffe"), nicht was man an die Referenz binden kann.

Sie können also davon ausgehen, dass der Verweis bereits vorhanden ist und an ein Objekt gebunden ist. Jetzt geht es darum, was damit gemacht werden kann.

    
Fanael 13.02.2012, 18:55
quelle

1 Antwort

13

Ich bin mir nicht sicher, ob Sie das suchen, aber bedenken Sie diese Funktion:

%Vor%

In diesem Fall können Sie nicht aufrufen

%Vor%

Allerdings, wenn wir diese Funktion haben:

%Vor%

Dann können wir tatsächlich

anrufen %Vor%

Es gibt also einen leichten Unterschied darin, dass eine const -Referenz möglicherweise an eine temporäre Foo binden kann, wenn eine nicht const -Referenz dies nicht kann. Daher möchten Sie wahrscheinlich, dass Funktionen, die Foo s verwenden, eine const Foo& anstelle von Foo& verwenden, um es zu ermöglichen, die Funktion mit Provisorien aufzurufen.

Hoffe, das hilft!

    
templatetypedef 13.02.2012 18:58
quelle

Tags und Links