Ich versuche mich an einer Container-Klasse
-
moin schrieb:
Warum gibt es dann überhaupt das Keyword inline? Wenn man es nicht da einsetzen soll, weil redundant, wo sonst?
inline bedeutet: link diese Funktion extern - also definiere sie nicht in jeder ÜE, auch wenn die Definition in jeder ÜE vorkommt.
class T
{
public:
void foo() {}
void foo2();
};T::foo2(){}
T::foo() ist inline - denn alle Funktionen die in der KLasse definiert werden, sind inline.
T::foo2() ist nicht inline
-
Jo, soweit war es mir dann klar. Aber in welchen Situationen soll man denn nun das inline Keyword benutzen, wenn man das sowieso schon implizit angeben (durch Implementation in der Klassendefinition) kann.
-
moin schrieb:
Jo, soweit war es mir dann klar. Aber in welchen Situationen soll man denn nun das inline Keyword benutzen, wenn man das sowieso schon implizit angeben (durch Implementation in der Klassendefinition) kann.
inline hat heutzutage nur den Sinn, dass du eine Funktion in einer Header Datei implementieren kannst.
zB finde ich es praktisch die operatoren direkt bei der Klasse stehen zu haben
class SomeType { ... }; inline bool operator==(SomeType const& a, SomeType const& b) { return a.get() == b.get(); }
wenn das inline da nicht steht, ists ne ODR Verletzung.