Вывод типа возвращаемого значения в C ++ 14 с примерами
В этой статье мы обсудим вывод типа возвращаемого значения в 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