C++中布尔函数的默认返回值是什么



如果我不返回一些东西,C++中布尔函数的返回值是多少?如果我只返回一个真值而不是假值,那么返回值会是什么?这是我的代码:

bool f(int a)
{
//    return value?
}
bool f(int a)
{
if(a%2) return true;
//    return value here?
}

返回类型是您在函数原型中定义的类型。请注意,C++中的函数没有默认返回值(特殊函数main除外(。应该返回值的函数必须在其所有代码路径中返回值。否则会产生未定义的行为。例如,Cf,这个在线C++工作草案:

9.6.3返回语句

从构造函数、析构函数或函数的末尾流出cv void返回类型相当于没有操作数的返回。否则,从主函数以外的函数末尾流出(6.8.3.1(导致未定义的行为。

当程序控制到达没有显式return值的分支时,调用非void函数(而不是main(的行为是未定义的。

(请注意,这是一个比C中更强的条件,在C中,只有当您尝试使用函数返回值时,行为才是未定义的。(

在C++中,您可以使用auto让编译器为您计算出返回类型:

auto foo(int n)
{
if (n >= 0){
return true;
} else {
return false;
}
}

但CCD_ 6的类型在编译时已知的意义上仍然是静态。这种方法在使用模板时特别有用。它的设计并不是为了让你对自己的类型漫不经心。

最新更新