Resumo da Aula 13

Sumário

1.1  Rotinas inline

A declaração de uma rotina como em linha (inline) faz com que uma invocação dessa rotina, ao ser gerado o correspondente código máquina, seja substituída pelo código integral da rotina, em vez de ser utilizado o mecanismo normal de invocação (na realidade o compilador pode não honrar este compromisso, digamos que é uma dica ao compilador).

A utilização de rotinas em linha torna o código potencialmente mais rápido, mas também torna o programa executável mais extenso.  Por isso, só as rotinas muito simples devem ser declaradas como em linha.

Uma rotina pode ser declarada como em linha precedendo a sua definição da palavra chave inline.  Por exemplo:

inline int somaDe(int const a, int const b) 
{

    return a + b;
}

Um método pode ser declarado como em linha de uma de duas formas:
  1. [Desaconselhada] Através da sua definição (e não simples declaração) dentro da definição da classe:

    1. class PilhaDeInt {

        public:

          ...

          int altura() const
          {

              return altura_;
          }

            ...

        private:
          int altura_;

          ...

      };

  2. [Aconselhada] Utilizando a palavra-chave inline na definição do método:

    1. class PilhaDeInt {

          ...

          int altura() const;

          ...

        private:
          int altura_;

          ...
      };

      ...

      inline int PilhaDeInt::altura() const
      {

          return altura_;
      }

Na maioria dos casos a segunda forma é preferível, pois a primeira torna demasiado complexa a definição da classe, dificultando a sua leitura.