Deducción de tipo de retorno en C++14 con ejemplos

En este artículo, analizaremos la deducción del tipo de retorno en C++14. Usando un tipo de retorno automático en C++14 , el compilador intentará deducir el tipo de retorno automáticamente.

Programa 1:

C++14

// C++14 program to illustrate the
// return type deduction
#include <iostream>
using namespace std;
  
// Function to multiply the two
// numbers a and b
auto multiply(int a, int b)
{
  
    // Return the product
    return a * b;
}
  
// Driver Code
int main()
{
    int a = 4, b = 5;
  
    // Function Call
    cout << multiply(a, b);
  
    return 0;
}
Producción:

20

Explicación : en el programa anterior, la función multiplicar (int a, int b) el compilador realizará la multiplicación. Como los parámetros pasados ​​4 y 5 , el compilador devolverá 20 y dado que su tipo de datos es un número entero, el compilador deducirá el tipo como un número entero automáticamente y devolverá 20 como un número entero.

Programa 2:

C++14

// C++ 14 program to illustrate the
// return type deduction
#include <iostream>
using namespace std;
  
// Function to increment the
// value of a
auto increase(int& a)
{
    // Increment a
    a++;
  
    // Return the updated value
    return a;
}
  
// Driver Code
int main()
{
    int b = 10;
  
    // Function Call
    int& c = increase(b);
  
    // Print the value b and c
    cout << b << c;
    return 0;
}

Producción:

Explicación : Como puede verse, en el programa anterior, el compilador muestra un error . Esto se debe a que en la función aumentar(int &a) , el compilador devolverá 11 y dado que su tipo es un número entero, el compilador deducirá su tipo como un número entero y lo devolverá, pero en main, estamos asignando unvalor entero a un número entero variable de referencia c , es por eso que mostraba error.

Ahora, el problema anterior se puede solucionar de dos maneras:

usando auto& :

C++14

// C++14 program to illustrate return
// type deduction using auto&
#include <iostream>
using namespace std;
  
// Function to increment the value
// of a and return the updated value
auto& increase(int& a)
{
    a++;
    return a;
}
  
// Driver Code
int main()
{
    int b = 10;
  
    // Function Call
    int& c = increase(b);
    cout << b << '\n'
         << c;
  
    return 0;
}
Producción:

11
11

usando decltype(auto) :

C++14

// C++14 program to illustrate return
// type deduction using decltype()
#include <iostream>
using namespace std;
  
// Function that increments the value
// of a and return the updated value
decltype(auto) increase(int& a)
{
    a++;
    return a;
}
  
// Driver Code
int main()
{
    int b = 10;
  
    // Function Call
    int& c = increase(b);
  
    cout << b << '\n'
         << c;
  
    return 0;
}
Producción:

11
11

Publicación traducida automáticamente

Artículo escrito por harshit17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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