在本文中,我们将讨论C++ 14中的返回类型推导。在C++ 14中使用自动返回类型,编译器将尝试自动推断出返回类型。
程序1:
C++14
// C++14 program to illustrate the
// return type deduction
#include
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;
}
C++14
// C++ 14 program to illustrate the
// return type deduction
#include
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;
}
C++14
// C++14 program to illustrate return
// type deduction using auto&
#include
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;
}
C++14
// C++14 program to illustrate return
// type deduction using decltype()
#include
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;
}
输出:
20
说明:在上面的程序中,编译器将执行乘法(int a,int b)函数。作为传递的参数4和5 ,编译器将返回20,并且由于其数据类型是整数,因此编译器将自动推导该类型为整数,并以整数形式返回20。
程式2:
C++ 14
// C++ 14 program to illustrate the
// return type deduction
#include
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;
}
输出:
说明:可以看出,在上述程序中,编译器显示错误。这是因为在函数gain(int&a)中,编译器将返回11,并且由于其类型是整数,因此编译器将其类型推导为整数并返回它,但是在主函数中,我们将整数值分配给整数参考变量c ,这就是为什么它显示错误。
现在,可以通过两种方式解决上述问题:
使用auto& :
C++ 14
// C++14 program to illustrate return
// type deduction using auto&
#include
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;
}
输出:
11
11
使用decltype(auto) :
C++ 14
// C++14 program to illustrate return
// type deduction using decltype()
#include
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;
}
输出:
11
11
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。