Warum sollte man die func( const Class &value )
und nicht nur func( Class value )
? Sicherlich werden moderne Compiler mit jeder Syntax das effizienteste Ergebnis erzielen. Ist dies noch notwendig oder nur ein Überbleibsel aus den Tagen der nicht optimierenden Compiler?
Nur um hinzuzufügen, dass gcc für beide Syntaxen ähnliche Assembler-Code-Ausgaben erzeugt. Vielleicht tun andere Compiler nicht?
Offensichtlich ist dies nicht der Fall. Ich hatte vor langer Zeit aufgrund von Code den Eindruck, dass gcc dies tut, aber das Experimentieren beweist das Gegenteil. Der Dank geht an Michael Burr, dessen Antwort auf eine ähnliche Frage würde nominiert werden, wenn sie hier angegeben würde.
8 Stimmen
"Sicherlich werden moderne Compiler mit jeder Syntax das effizienteste Ergebnis erzielen." Computer tun nicht das, was man von ihnen will, sondern das, was man ihnen sagt!
3 Stimmen
"gcc wird für beide ähnliche Assemblercodes erzeugen" - können Sie diese Behauptung belegen? Wenn es wahr ist, hat der gcc einen Fehler.
2 Stimmen
Es ist möglich, dass gcc unter bestimmten Umständen ähnlichen Assembler-Code für beide erzeugt, vielleicht wenn ein int übergeben wird. Es sollte sicherlich nicht, wenn es eine nicht-triviale Kopie Konstruktor herum.
0 Stimmen
Siehe hier für eine Erklärung, warum Compiler in der Regel nicht in der Lage sind, ein pass-by-value als pass-by-const-ref zu optimieren: stackoverflow.com/questions/552134/