La función inline en C++

última actualización el 29 de mayo de 2009, 22:52 por Carlos-vialfa
Publicado por Carlos-vialfa


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;
}


PD: El artículo original fue escrito por mamiemando, contribuidor de CommentCaMarche
Mejores respuestas para « La función inline en C++ » en :
Cómo funciona Bluetooth Ver Cómo funciona El estándar Bluetooth, del mismo modo que WiFi, utiliza la técnica FHSS (Frequency Hopping Spread Spectrum, en español Espectro ensanchado por saltos de frecuencia), que consiste en dividir la banda de frecuencia de 2.402 - 2.480 GHz en...
Javascript – La función split() Ver Javascript – La función split() La función split() permite dividir una cadena de caracteres (string) en varios bloques y crear un array con estos, en función de un elemento indicador del split. En el siguiente ejemplo, la función split() permite...
Javascript – La función trim() VerJavascript – La función trim() La función trim() de PHP (y otros lenguajes de programación) permite eliminar los espacios en blanco al inicio y al final de una cadena. En Javascript no existe esta función pero el siguiente código permite obtener el...
Google – La función calculadora VerSabias que Google dispone de una calculadora integrada. Para utilizarla, tan solo hay que escribir la expresión que se desea evaluar en el campo de búsqueda de Google y presionar Enter. Esta función es accesible desde la barra Google o desde los...