给定一个返回值的函数,是否可以在给定某个条件的情况下退出函数而不返回任何内容?如果是这样,你怎么能做到这一点?
例:
int getNumber ()
{
. . .
}
Run Code Online (Sandbox Code Playgroud)
所以说你在这个功能.有没有办法退出它而不做任何事情?
Maw*_*awg 16
你可能会失去一个return;没有回报价值的东西.编译器会发出警告,但可能没有错误.
但是,为什么你甚至会考虑这个呢?你想要实现什么目标?
调用代码是什么样的?如果是,int someVar = getNumber();那么someVar的值是未定义的(这是一个坏事).
听起来我想要返回两条信息,其中一条告诉你另一条信息是否有效.
尝试类似的东西
bool GetNumber(int * outputNumber)
{
if ....
{
*outputNumber = ...;
return true;
}
else
{
return false; // contents of outputNumber are undefined
}
}
int number;
bool isNumberValid;
isNumberValid = GetNumber(&number);
if (isNumberValid)
... do something with number
Run Code Online (Sandbox Code Playgroud)
rer*_*run 15
你有两个选择:return某事或throw.
int getNumber()
{
return 3;
}
int getNumber()
{
throw string("Some Var");
}
Run Code Online (Sandbox Code Playgroud)
如果你throw,你必须catch输入你输入的类型.
int maint(int argc, char ** argc)
{
try
{
getNumber();
}
catch(string std)
{
//Your code will execute here if you throw
}
}
Run Code Online (Sandbox Code Playgroud)
简单方案:
boost::optional<int> getNumber( )
{
// May now return an int, or may return nothing.
}
Run Code Online (Sandbox Code Playgroud)