Semana 1: funciones en línea, sobrecarga de funciones, parámetros predeterminados de la función

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:Inserte la descripción de la imagen aquí

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.

Supongo que te gusta

Origin blog.csdn.net/ZmJ6666/article/details/108548431
Recomendado
Clasificación