以下 if 语句中的条件有什么作用

what does the condition in the following if statement do?

本文关键字:什么 作用 条件 if 语句 以下      更新时间:2023-10-16
if (read(read(cin, data1), data2))

问题是C++入门第5版的练习。函数read定义如下:

std::istream &read(std::istream &is, Sales_data &item)
{
    double price = 0;
    is >> item.bookNo >> item.units_sold >> price;
    item.revenue = price * item.units_sold;
    return is;
}

if 语句中的条件有什么作用?我无法理解这一点。

if 语句中的条件有什么作用?我无法理解 这一点。

你不应该要求练习的解决方案;这削弱了学习效果。再次浏览章节和功能,看看您是否能发现要点。

如果你把它写出来稍微不同一点,也许会有所帮助:

   std::istream& a = read(cin, data1);
   std::istream& b = read(a  , data2);
   if (b)
        // ...

read 函数返回输入流,类似于常见用法:

int v1, v2;
if (std::cin >> v1 >> v2)
//...

我想在本书的这个阶段,还没有引入运算符重载,如果运算符<<为类Sales_data重载会更清楚。

在这种情况下

,函数 read 采用std::istream对象引用并返回相同的类型。这样做是为了read可以称为级联。考虑:

cin >> a >> b;

您认为a >> b应该如何运作?只是cin.operator>>(int&)返回cin对象本身。因此,通过理解,read遵循相同的方法。