La función inline en C++

Noviembre 2016



Definición


La palabra reservada inline es utilizada en C++ y se aplica a una función. Esta indica al compilador que cada llamado a la función inline deberá ser reemplazado por el cuerpo de esta función. En la practica la función inline es utilizado solo cuando las funciones son pequeñas para evitar generar un ejecutable de tamaño considerable.

La palabra reservada inline tiene la ventaja de acelerar un programa si éste invoca regularmente a la función inline. Permite resumir considerablemente el código, en particular para los accesadores de una clase. Un accesador de clase es típicamente una función de una línea.

Ejemplo 1


main.cpp

#include <iostream>
inline void mi_funcion(){
  std::cout << "me gustan los tapires" << std::endl;
}

class mi_estructura_t{
  protected:
    int x;
  public:
    mi_estructura_t(int x0):x(x0){}
    inline int get_x() const{
      return x;
    }
};

int main(){
  mi_funcion();
  mi_estructura_t s(7);
  std::cout << s.get_x() << std::endl;
  return 0;

Inline y encabezados


inline permite declarar e implementar funciones directamente en el encabezado (.hpp) sin peligro de multi-definición. El símbolo de la función inline no aparece nunca explícitamente durante el enlazado ya que todos los llamados a esta función han sido reemplazados. Recordemos que si una función no es inline, es implementada en un encabezado, y este encabezado es incluido en varios lugares, el compilador devolverá un error de definición múltiple.

Recordemos que entre las funciones templates, únicamente las funciones inline pueden ser implementadas en el encabezado. Una función template puede perfectamente ser inline.

Si deseamos codificar una función inline declarada en un encabezado (.hpp) pero implementada en un archivo fuente (.cpp) sólo el prototipo del encabezado debe contener la palabra reservada inline.

Ejemplo 2


archivo.hpp

inline void f();


archivo.cpp:

#include <iostream>
#include "fichier.hpp"

void f(){
  std::cout << "plop !" << std::endl;
}


Consulta también :
El documento «La función inline en C++» de CCM (es.ccm.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo siempre y cuando respetes las condiciones de dicha licencia y des crédito a CCM.