Condividi tramite


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

Vedere anche

Riferimenti

inline, __inline, __forceinline