2014-11-08 57 views
0
if (read(read(cin, data1), data2)) 

问题是练习C++ Primer 5th Edition。该功能read是这样定义如下:以下if语句的条件是什么?

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语句呢?我无法理解这一点。

+1

练习!那么,如果我们为你解决这个问题又有什么意义,而你又可以阅读这本书呢? – deepmax 2014-11-08 15:24:57

+0

@MM。我无法理解'条件'的意思。真正问的是什么问题?我应该输入两个Sales_data项目?接着? – pezy 2014-11-08 15:29:10

回答

1

if语句中的条件是干什么的?我无法理解 这一点。

你不应该要求锻炼的解决方案;这会降低学习效果。再次阅读本章和函数,看看你是否能够发现重要的观点。

也许帮助,如果你写出来一点点不同:

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

对不起,要求解决练习......和thx明确分工。我知道了。 – pezy 2014-11-08 15:39:51

0

功能read,在这种情况下,需要一个std::istream对象引用并返回相同的类型。这样做,read可以被称为级联。考虑:

cin >> a >> b; 

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

1

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

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

我想在这个阶段的书,运算符重载尚未出台,这将是,如果操作者更清晰<<超负荷类Sales_data