Inline member functions (C++ only)
You may either define a member function inside its class definition, or you may define it outside if you have already declared (but not defined) the member function in the class definition.
A member function that is defined inside its class member list
is called an inline member function. Member
functions containing a few lines of code are usually declared inline.
In the above example, add()
is an inline member function.
If you define a member function outside of its class definition, it
must appear in a namespace scope enclosing the class definition. You
must also qualify the member function name using the scope resolution
(::
) operator.
An equivalent way to declare an inline member function is to either
declare it in the class with the inline
keyword (and define
the function outside of its class) or to define it outside of the
class declaration using the inline
keyword.
Y::f()
is
an inline member function:
struct Y {
private:
char* a;
public:
char* f() { return a; }
};
The following example is equivalent to the previous example; Y::f()
is
an inline member function:
struct Y {
private:
char* a;
public:
char* f();
};
inline char* Y::f() { return a; }
The inline
specifier does not affect the linkage of
a member or nonmember function: linkage is external by default.
Member functions of a local class must be defined within their class definition. As a result, member functions of a local class are implicitly inline functions. These inline member functions have no linkage.