Función en línea
- Las llamadas a funciones tienen una sobrecarga de tiempo. Cuando se invoca una función, se necesitan algunas instrucciones para poner func en la pila y dejar la pila después de terminar. Si la función tiene solo unas pocas oraciones y la ejecución es rápida, la función se llama muchas veces y la sobrecarga será muy grande.
- Para reducir la sobrecarga de llamadas a funciones, se introduce el mecanismo de funciones en línea. Procesar llamadas a funciones en línea es insertar todo el código en la declaración de llamada sin generar la declaración de función de llamada.
- desventaja: mayor volumen del programa
Definición: inline int max()
agregue la palabra clave en línea
Sobrecarga de funciones
- El mismo nombre pero diferentes parámetros son funciones de sobrecarga
- La sobrecarga de funciones facilita la denominación de funciones
- El compilador determina qué función utilizar en función del número y tipo de parámetros reales
void Max(double a,double b);
void Max(int a,int b);
void Max(double a,double b,double c);
int main()
{
int a=10,b=11;
double r1=5.2,r2=6.3,r3=9.1;
Max(a,b);
Max(r1,r2);
Max(r1,r2,r3);
}
void Max(int a,int b)
{
cout<<"invoking max 1...\n";
if(a>b)
cout<<"Max is "<<a<<endl;
else
cout<<"Max is "<<b<<endl;
}
void Max(double a,double b)
{
cout<<"invoking max 2...\n";
if(a>b)
cout<<"Max is "<<a<<endl;
else
cout<<"Max is "<<b<<endl;
}
void Max(double a,double b,double c)
{
cout<<"invoking max 1...\n";
if(a>b&&a>c)
cout<<"Max is "<<a<<endl;
else if(b>a&&b>c)
cout<<"Max is "<<b<<endl;
else
cout<<"Max is "<<c<<endl;
}
Resultado de salida:
PD. ¿La función max no se puede nombrar aquí porque entra en conflicto con una función en la biblioteca de iostream?
Parámetros predeterminados de la función
Al definir parámetros, varios parámetros consecutivos en el extremo derecho tienen valores predeterminados
void func(int x1, int x2=2, int x3=3);
func(10); //equal to func(10,2,3)
func(10,8); // equal to func(10,8,3)
func(10,8,9); // equal to func(10,8,9)
func(10, ,9) ; //error
- El propósito de la función predeterminada es mejorar la escalabilidad del programa.
- Si una función escrita necesita agregar nuevos parámetros, y es posible que la función de llamada original no use los nuevos parámetros, entonces puede evitar modificar esas declaraciones de llamada de función y usar los nuevos parámetros.