当你只使用 return 时,函数返回什么类型;在 c++ 中
What type does a function return when you just use return; in c++
我使用一个函数来返回我在数据文件中找到的obj。我想知道当没有相应的 obj 时它会返回什么类型的数据。这是我的代码。
BankAccount Find(string account_num , string password )
{
FILE_IN.seekg(0 , ios::beg);
int check = 0;
string temp1;
string temp2;
string temp3;
while(!FILE_IN.eof())
{
getline(FILE_IN , temp1);
getline(FILE_IN , temp2);
getline(FILE_IN , temp3);
if(account_num.compare(temp1) == 0 && password.compare(temp2) == 0)
check = 1;
}
if(check == 1)
{
fstream file;
file.open(temp3 , ios::out);
string name;
string hist;
string bal;
getline(file , name);
getline(file , bal);
file.ignore(numeric_limits<streamsize>::max() , 'n');
getline(file , hist , 'H');
BankAccount account = BankAccount(atoi(account_num.c_str()) , atoi(bal.c_str()) , password , name );
account.Enter_History(hist);
return account;
}
else
{
return;
}
}
您的程序格式不正确,不应编译时没有错误。不允许在具有非 void 返回类型的函数中使用不带操作数/值的return
语句,请参阅 [stmt.return]/2 中的 C++17 标准草案。
您的程序不起作用。仅当此函数的类型BankAccount
时,才能返回变量。 考虑使用单独的函数来检查所有内容是否有效,这样您就不必像在代码中那样处理边缘情况,或者返回某种 null-bankAccount(我不建议这样做(。
一个std::pair
可以为你工作。 这样做不是最佳做法,但使用std::pair<BankAccount, bool> retVal
您可以使用retVal.second
来存储一个布尔值,该布尔值指示您的程序是否已正确执行。
我个人会使用尝试捕获块。 喜欢这个:
//Do stuff with Acc
if(acc.good == false){
throw std::invalid_argument("invalidAccount");
然后在调用函数时使用 try-catch 块。这样您就可以中断功能。 最好的方法可能是重新设计你的代码,这样就不会发生这种情况。
IDE 当时工作不准确!该代码的格式不正确,就像@wallnut的答案一样!该函数必须具有与其声明中的类型类似的返回类型。
相关文章:
- 我应该使用什么来代替void作为变体中的替代类型之一
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 数据类型"struct seq<0, 1, 2>{}"含义是什么?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 您应该在什么时候创建自己的异常类型
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 未命名的非类型模板参数有什么意义?
- 静态自动 constexpr t = { "red" , "black" , "green" } 是什么类型;派生到?
- 模板<>模板<类型名 T> 语法有什么用?
- 指针类型类成员的动态强制转换的恒定性是什么?
- 当 c++ 需要一种数据类型并获取另一种数据类型时会发生什么?
- 这是什么类型的C++语法,我应该采取什么步骤来理解这一点
- 返回类型在 C++ OOP 中是什么意思
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 类名后跟括号的类型是什么
- 删除对象(具有不同类型)的引用时会发生什么情况?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 当你只使用 return 时,函数返回什么类型;在 c++ 中