Quando utilizzare le funzioni inline
Le funzioni inline risultano particolarmente adatte per le piccole funzioni come l'accesso ai membri dati privati. Lo scopo principale di queste funzioni di accesso a una o due righe è di restituire le informazioni sullo stato degli oggetti; le funzioni brevi sono sensibili al sovraccarico delle chiamate di funzione. Le funzioni più lunghe impiegano proporzionalmente meno tempo nella sequenza di chiamata/restituzione e traggono meno vantaggio dall'incorporamento.
Esempio
La classe Point, introdotta in Risultati delle chiamata di funzione può essere ottimizzata nel modo seguente:
// when_to_use_inline_functions.cpp
class Point
{
public:
// Define "accessor" functions as
// reference types.
unsigned& x();
unsigned& y();
private:
unsigned _x;
unsigned _y;
};
inline unsigned& Point::x()
{
return _x;
}
inline unsigned& Point::y()
{
return _y;
}
int main()
{
}
Presupponendo che la modifica delle coordinate sia un'operazione relativamente comune in un client di tale classe, se si specificano le due funzioni di accesso (x e y nell'esempio precedente) come inline generalmente il sovraccarico viene salvato in:
Chiamate di funzione (incluso il passaggio dei parametri e il posizionamento dell'indirizzo dell'oggetto nello stack)
Conservazione dello stack frame del chiamante
Nuova impostazione dello stack frame
Comunicazione del valore restituito
Ripristino dello stack frame precedente
Restituzione