Nuevas funciones en C ++ (llamada por referencias, por Valores de llamadas, llamadas de Valores, Retorno de referencia, los argumentos por defecto)

llamada Función: la llamada por referencia

Ya hemos aprendido que en C función de llamada realizada por dos tipos: 1) Llamar por valor. 2) Llamar por dirección.

C ++ introduce el concepto de llamadas por referencia , que nos permite pasar parámetros a las funciones por referencia. al pasar argumentos por referencia, los argumentos de formato en las llamadas funciones se convierten en alias a los argumentos reales en la función de llamada, significa esto que cuando la función está trabajando con sus propios argumentos, en realidad está trabajando en los datos originales.

Sintaxis

//Declaration
return_type function_name( type_of_argument,type_of_argument,..);
//Calling
function_name(&actual_argument,&actual_argument,..);
//Definition
return_type function_name(type_of_argument &alias_variable,..)
{
....;
}

Considere el ejemplo

// Program to swap two values using CALL BY REFERENCE
#include <iostream>
using namespace std;
// function declaration
void swap(int&,int&);
int main()
{
int a=10,b=20;
cout<<"nVALUES BEFORE SWAPPING :n";
cout<<"A:"<< a<<",B:"<< b;
// function calling
swap(a,b);
cout<<"nVALUES AFTER SWAPPING :n";
cout<<"A:"<< a<<",B:"<< b;
cout<<"n";
return 0;
}
// function definition
void swap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}

VALUES BEFORE SWAPPING :
A:10,B:20
VALUES AFTER SWAPPING :
A:20,B:10

Función de Regreso: POR REFERENCIA

En C ++ una función puede también return referencia.

Sintaxis

//Declaration
return_type& function_name( type_of_argument,type_of_argument,..);
//Calling
container_var=function_name(&actual_argument,&actual_argument,..);
//Definition
return_type& function_name(type_of_argument &alias_variable,..)
{
....;
return reference_variable;
}

Considere el ejemplo

// Program to find largest number among three numbers using 
// call by reference and return reference...
#include <iostream>
using namespace std;
int& largestNumber(int&,int&,int&);
int main(){
int a,b,c;
a=10,b=22,c=21;
cout<<"Largest number is :"<< largestNumber(a,b,c)<< endl;
return 0;
}
int & largestNumber(int &x,int &y,int &z){
if(x > y && x > z)
return x;
else if(y > x && y> z)
return y;
else
return z;
}

    
Largest number is :22

Default Argumento

C ++ nos permite valores default asignar a los argumentos de funciones, que se encuentra en muy útil case un argumento de comparación no es dado por el usuario en función de instrucción de llamada.

If usuario no proporciona valor al argumento de comparación (que se asigna como un argumento default, la función tendrá valor default como argumento

Un default argumento es una parte de la declaración de la función (no definición -. En función de definición, siempre se debe proporcionar). se indica al compilador qué valor debe pasar por un argumento if el programador pierde deliberadamente el argumento cuando se llama a una función.

sintaxis

//Function declaration with default argument
return_type function_name(type arg1,type arg2=default_value,...);
//here, arg2 is default argument....

Considere el ejemplo

// function declaration 
float simpleInterest(int amount,int time,float rate=3.5);
int main(){
int amount,time;
float rate;
char choice;
cout<<"Enter amount :"; cin>>amount;
cout<<"Enter time :"; cin>>time;
cout<<"Do you want to input interest rate ? :";
cin>>choice;
if(choice=='Y'||choice=='y'){
cout<<"Enter rate ?:"; cin>>rate;
cout<<"Simple interest is : "<< simpleInterest(amount,time,rate);
}
else{
// We are not passing rate, default value (3.5) will be used.
cout<<"Simple interest is : "<< simpleInterest(amount,time);
}
cout<<"n";
return 0;
}
// function definition..
float simpleInterest(int amount,int time,float rate){
float si;
si=((float)amount*(float)time*rate)/100;
return si;
}

    
First run
Enter amount :12450
Enter time :3
Do you want to input interest rate ? :y
Enter rate ?:12.5
Simple interest is : 4668.75
Second run
Enter amount :12450
Enter time :3
Do you want to input interest rate ? :N
Simple interest is : 1307.25


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *