传统的C++程序,有的时候既想要知道函数是否正确的执行了,又想要知道返回的结果。
这时通常的办法是通过返回值表示函数是否正常的执行,如果返回值为0表示成功执行,否则表示失败,然后再通过参数传递一个指针或引用来获取结果:
#include <iostream>
using namespace std;
int doDiv(int d1, int d2, int& r)
{
if(d2 == 0)
{
return -1;
}
r = d1 / d2;
return 0;
}
int main()
{
int result = 0;
if(doDiv(6, 2, result) == 0)
{
cout << "result=" << result<< endl;
}
else
{
cout << "invalid param" << endl;
}
return 0;
}
这样做比较麻烦的是得事先定义一个变量
C++11后,可以通过返回一个tuple,同时返回函数状态及执行结果:
#include <iostream>
using namespace std;
tuple<int,int> doDiv(int d1, int d2)
{
if(d2 == 0)
{
return make_tuple(-1, 0);
}
return make_tuple(0, d1 / d2);;
}