It’s
critical that you be able to hide the underlying implementation of a class
because you may want to change that implementation sometime later. You’ll
do this for efficiency, or because you get a better understanding of the
problem, or because some new class becomes available that you want to use in
the implementation. Anything that jeopardizes the privacy of the underlying
implementation reduces the flexibility of the language. Thus, the inline
function is very important because it virtually eliminates the need for
preprocessor macros and their attendant problems. With inlines, member
functions can be as efficient as preprocessor macros.
The
inline function can be overused in class definitions, of course. The programmer
is tempted to do so because it’s easier, so it will happen. However,
it’s not that big an issue because later, when looking for size
reductions, you can always move the functions out of line with no effect on
their functionality. The development guideline should be “First make it
work, then optimize it.”