2016-05-25 45 views
0

例如:當使用cout和cin時,有什麼是「<<" and ">>」操作符,我們爲什麼要使用它們?

int age; 
cin >> age; 

cout << "You are " << age << " years old!" << endl; 

爲什麼我們在這裏使用了 「< <」 和 「>>」 運營商?他們在做什麼?我有點理解位移,但我不明白這是如何工作的。

+1

閱讀任何關於C++的書。它會在第一章或第二章中向你解釋一切。 –

+0

[C++書籍的最佳列表](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –

+0

當他們對某個語言的某個方面有特殊疑問時,告訴某人「只是閱讀這本書」是沒有用的。 OP顯然至少知道_some_ C++。當你不知道它叫什麼(在這種情況下操作符超載)時,你不能在Google或某本書的索引中搜索某些內容。 –

回答

8

他們被稱爲流插入運算符<<)和流提取運算符>>)。

這些操作符與左右位移操作符(即使它們具有不同的名稱)相同。移位運算符被重載,所以當左邊是一個流時,他們讀取或寫入該流。

他們就像任何函數調用 - 它的工作原理是:

leftShift(leftShift(leftShift(leftShift(cout, "You are "), age), " years old!"), endl); 

除了函數被調用operator<<而不是leftShift
嚴格地說,沒有任何理由稱leftShift函數需要左移,同樣也沒有理由稱爲operator<<函數必須左移。

1

它是運算符重載。對於流類來說,bitshift運算符被重載以用於不同的目的(讀取和寫入流)。請參閱:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

+0

這些情況下的目的是什麼? 「cout會輸出這些東西」和「cin會使該整數等於輸入」,還是有更具體的事情發生? – CodeMan42

+1

這幾乎只是語法上的糖。重載操作符也是可鏈接的(即它們返回流對象實例),因此可以在鏈中進行一系列'<<'調用。它看起來簡潔。 –

1

>><<已超載作爲料流的功能,如:

std::ostream & operator << (std::ostream &, int) 

(和其他)

,使得(在這種情況下)時COUT < < 10被使用時,它調用過載函數將打印該值。

它與位移無關,只是它使用相同的操作符'< <'和'>>'。

相關問題