sininline
, es probable que terminar con múltiples símbolos exportados, si la función se declara en el espacio de nombres o global alcance (resultados en errores de enlace).
Sin embargo, para una clase (como se ve en su ejemplo), la mayoría de los compiladores declaran implícitamente el método como en línea (-fno-default-inline
deshabilitará ese valor predeterminado en GCC).
si declara una función como en línea, el compilador puede esperar ver su definición en la traducción. por lo tanto, debe reservarlo para el momento en que la definición sea visible.
en un nivel superior: una definición en la declaración de clase es frecuentemente visible para más traducciones. esto puede dar como resultado una mejor optimización y puede dar como resultado un aumento de los tiempos de compilación.
a menos que la optimización manual y las compilaciones rápidas sean importantes, es inusual usar la palabra clave en una declaración de clase actualmente.
¿Qué quiere decir con "TU" y "ODR"? – WiSaGaN
@WiSaGaN: TU = Unidad de traducción: más o menos, el archivo fuente preprocesado. ODR = Una Regla de Definición: se requiere que todas las definiciones de una función/clase sean idénticas, a nivel de personaje, a través de TU. –
¿En el nivel de personaje o en el nivel de token? – fredoverflow