para que se usan las funciones inline
Declarar una función como "inline" tiene dos propósitos posibles.
Uno es una sugerencia al compilador para que ubique el cuerpo de esa función en el lugar donde se hace la llamada. De esta manera se ahorra la llamada a la función y el código se ejecuta un poco más rápido. Pero es sólo una sugerencia, el compilador la agradece, pero en definitiva hará lo que mejor le parezca.
El otro propósito es para poder definir una función en un .h (entonces ya no es obligatorio definirla en un .cpp; se usa mucho en librerías "header only" todo definido en el mismo .h)- De esta manera se garantiza que la función tiene una sóla definición, aunque el -h se incluya en varios .cpp
A partir de C++17 también se puede declarar variables inline, con este mismo sentido.
Como todo en este mundo, la foto completa es un poco más compleja, está bien explicado en
https://en.cppreference.com/w/cpp/language/inline