2014-11-08 55 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