sexta-feira, 3 de outubro de 2008

funções inline em C++

O que é uma função inline?

Uma função inline é um tipo de função que tem um comportamento levemente diferente das funções comuns que temos em C++. Basicamente, suas chamadas são substituídas pela lógica da função em si, em tempo de compilação.

O quê? hein?

Bom, de uma forma bem simplista, o que acontece é o seguinte:



Este pedaço de codigo, quando for compilado, acaba virando isso:



Beleza, mas e o quico?

Esta técnica traz benefícios e malefícios. Na maioria dos casos (muita calma nessa hora! isso nem sempre é assim...) o código compilado torna-se:

- Mais rápido
Isto porque nós vamos economizar as chamadas de funções, ou seja, lá no assembly, não vai existir um desvio de fluxo (um jump) a cada chamada de função.

- Maior
Como a implementação da função é "colada" em cada chamada, o tamanho do executável final tende a crescer.

Implementação

Existem duas formas de tornar uma função inline:

- explicitamente: usando a palavra reservada inline:



- implicitamente: Quando uma função é implementada na própria declaração da classe, ela vira inline.




Esse é um artifício legal da linguagem, e deve ser usado - mas com responsabilidade :-)