Wann sollte ich const & benutzen?

8

Ich habe einen Code wie diesen gefunden:

%Vor%

Es kompiliert und läuft.

Ich habe mich gefragt, welche Vorteile (oder Nachteile) der Verweis (& amp;) auf diesen Operator == hat.

    
dvicino 15.03.2015, 02:52
quelle

1 Antwort

4

als T.C. hat in Kommentaren darauf hingewiesen, dieser Grund dafür ist NICHT "nur lvales" zu akzeptieren. const Referenzen binden an rvalues ​​einfach in Ordnung.

Der Grund dafür ist, dass Funktionen nur dann in die Wertkategorie des impliziten Objektparameters überladen werden können, wenn ALLE Überladungen eine Wertkategorie angeben. Das heißt, wenn Sie eine Überladung mit && hinzufügen, die nur mit rvalues ​​übereinstimmt, wird sie nicht kompiliert, es sei denn, Sie fügen & der vorhandenen Überladung hinzu.

In 13.1, hier ist der Wortlaut der Regel:

  

Member-Funktionsdeklarationen mit dem gleichen Namen und der gleichen Parameter-Typ-Liste sowie Member-Funktions-Template-Deklarationen mit demselben Namen, derselben Parameter-Typ-Liste und dasselbe   Vorlagenparameterlisten können nicht überladen werden, wenn einige von ihnen, aber nicht alle, einen Qualifikationsmerkmal haben.

und gibt ein Beispiel

%Vor%
    
Ben Voigt 15.03.2015, 04:01
quelle

Tags und Links