Вывод типа возвращаемого значения в C ++ 14 с примерами

Опубликовано: 30 Ноября, 2021

В этой статье мы обсудим вывод типа возвращаемого значения в C ++ 14. Используя тип автоматического возврата в C ++ 14 , компилятор попытается определить тип возврата автоматически.

Программа 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;
}
Выход:
20

Объяснение : В приведенной выше программе компилятор выполняет умножение функции multiply (int a, int b). В качестве переданных параметров 4 и 5 компилятор вернет 20, а поскольку его тип данных является целым числом, компилятор автоматически определит тип как целое число и вернет 20 как целое число.

Программа 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;
}

Выход:

Объяснение : Как видно, в приведенной выше программе компилятор показывает ошибку. Это связано с тем, что при увеличении функции (int & a) компилятор вернет 11, и поскольку его тип является целым числом, компилятор выведет его тип как целое число и вернет его, но в основном мы присваиваем целочисленное значение целому числу ссылочная переменная c , поэтому она показывала ошибку.

Теперь указанную выше проблему можно решить двумя способами:

используя авто & :

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 << ' '
<< c;
return 0;
}
Выход:
11
11

используя 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 << ' '
<< c;
return 0;
}
Выход:
11
11
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .