Quando usar funções embutidas
As funções embutidas são usadas da melhor forma para funções pequenas, como acessar membros de dados particulares. A principal finalidade dessas funções de acesso de uma ou duas linhas é retornar informações de estado sobre objetos; as funções curtas são sensíveis à sobrecarga das chamadas de função. As funções mais longas proporcionalmente passam menos tempo na sequência de chamadas/retornos e se beneficiam menos do processo de embutir.
Exemplo
A classe Point, apresentada em Resultados da chamada de função, pode ser otimizada como segue:
// 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()
{
}
Supondo que a manipulação coordenada seja uma operação relativamente comum em um cliente dessa classe, especificar as duas funções de acesso (x e y no exemplo acima) como inline normalmente poupa a sobrecarga de:
Chamadas de função (inclusive passagem de parâmetros e colocação do endereço do objeto na pilha)
Preservação do registro de ativação do chamador
Configuração do novo registro de ativação
Comunicação do valor de retorno
Restauração do registro de ativação antigo
Valor de