get set methoden
-
Hallo!
Werden get bzw. setter methoden und Konstruktoren in der Header Datei auch nur deklariert wie die anderen Methoden oder darf man(bzw. sollte man?) sie schon in der Header definieren.
MfG
Dosunmu
-
wenn du sie im header schon implementierst und der compiler sie im zuge der optimierung nicht inlined, wird dir der linker sehr wahrscheinlich irgendwann fehler um die ohren kloppen.
-
thordk schrieb:
wenn du sie im header schon implementierst und der compiler sie im zuge der optimierung nicht inlined, wird dir der linker sehr wahrscheinlich irgendwann fehler um die ohren kloppen.
Etwaige Fehler haben nichts mit ausgeführten oder unterlassenen Optimierungen zu tun. Wenn die Methoden als inline deklariert wurden, ist alles schick. Egal ob sie der Compiler später beim Aufruf inline-expandiert oder nicht. Wurden sie nicht inline deklariert, hat man ein Problem, sobald die Definitionen in mehr als einer ÜE auftauchen. In diesem Fall liegt eine ODR-Verletzung vor, egal ob inline-expandiert oder nicht.
Wenn man also tatsächlich Methoden im Header definiert, bietet es sich an dies direkt innerhalb der Klassendefinition zu tun. In diesem Fall sind die Methoden automatisch inline deklariert. Andernfalls darf man die inline-Deklaration nicht vergessen.Um auf die eigentliche Frage zurückzukommen: solange du nicht nachweislich Vorteile durch eine inline-Definition hast (z.B. nachweislich bessere Performanz), solltest du auch die Definition kurzer Methoden wie getter/setter in eine cpp-Datei auslagern, da dies weniger physische Abhängigkeiten produziert.