Warum const Rational anstatt Rational zurückgeben

8

Ich habe die folgende Implementierung des Operators * wie folgt gesehen:

%Vor%

Ich habe hier zwei Fragen:

  • Q1 & gt; Warum muss der Operator * zurückkehren? eher Rational als einfach Rational
  • Q2 & gt; Wenn wir eine Friend-Funktion definieren, sollten wir uns den Zugriffsmodifikator genauer ansehen?
q0987 21.10.2010, 16:20
quelle

2 Antworten

12
  1. So dass Sie etwas wie Rational a, b, c; (a * b) = c; nicht tun können.

  2. Nein.

Oliver Charlesworth 21.10.2010, 16:23
quelle
10

Beachten Sie, dass die Rückgabe von const Rational anstelle von Rational nicht nur unsinnige Zuweisungen verhindert, sondern auch die Semantik verschiebt (weil Rational&& nicht an const Rational bindet) und daher in C ++ 0x.

Scott Meyers schrieb einen Hinweis zu diesem Thema:

  

Deklaration by-value Funktion Rückgabewerte const wird   verhindern, dass sie in C ++ 0x an Rvalue-Referenzen gebunden sind.   Weil rvalue-Referenzen dazu beitragen sollen, besser zu werden   die Effizienz von C ++ - Code ist wichtig zu nehmen   Berücksichtigung der Wechselwirkung von konstanten Rückgabewerten   und die Initialisierung von Rvalue Referenzen, wenn   Spezifizieren von Funktionssignaturen.

    
fredoverflow 21.10.2010 17:04
quelle

Tags und Links