In einem Projekt, das ich halte, sehe ich eine Menge Code, wie dies für einfache get
/set
MethodenWas ist die Verwendung von Const-Referenzen auf primitive Typen?
const int & MyClass::getFoo() { return m_foo; }
void MyClass::setFoo(const int & foo) { m_foo = foo; }
Was der Punkt ist, dass anstelle des folgenden dabei?
int MyClass::getFoo() { return m_foo; } // Removed 'const' and '&'
void MyClass::setFoo(const int foo) { m_foo = foo; } // Removed '&'
Passing einen Verweis auf eine primitive Art sollte die gleiche (oder mehr) Aufwand erfordern als den Typ der Wert vorbei selbst, nicht wahr?
Es ist nur eine Nummer nach allem ...
Ist das nur ein paar versuchte Mikro-Optimierung oder gibt es einen echten Vorteil?
"Es ist sehr gefährlich, eine Referenz (const oder nicht) zurückzugeben" - Ich bin gespannt, wie kommen Sie dann zu schwereren Werten zurück? Vielleicht ist die Notwendigkeit ein Zeichen von schlechtem Design, aber ich tendiere dazu, Strings by const ref zurückzugeben. –
@me - Ich sage nicht, Strings sind Schwergewicht, ich bevorzuge es, den (zugegebenermaßen geringen) Aufwand zu vermeiden, sie zu kopieren. –
Auf diese Weise müssen Sie über die Lebensdauer des Objekts nachdenken. Das kann für komplexe Datentypen wert sein, aber nicht für primitive, die zu den gleichen Kosten wie Referenzen kopiert werden. – sharptooth