例如:當使用cout和cin時,有什麼是「<<" and ">>」操作符,我們爲什麼要使用它們?
int age;
cin >> age;
cout << "You are " << age << " years old!" << endl;
爲什麼我們在這裏使用了 「< <」 和 「>>」 運營商?他們在做什麼?我有點理解位移,但我不明白這是如何工作的。
例如:當使用cout和cin時,有什麼是「<<" and ">>」操作符,我們爲什麼要使用它們?
int age;
cin >> age;
cout << "You are " << age << " years old!" << endl;
爲什麼我們在這裏使用了 「< <」 和 「>>」 運營商?他們在做什麼?我有點理解位移,但我不明白這是如何工作的。
他們被稱爲流插入運算符(<<
)和流提取運算符(>>
)。
這些操作符與左右位移操作符(即使它們具有不同的名稱)相同。移位運算符被重載,所以當左邊是一個流時,他們讀取或寫入該流。
他們就像任何函數調用 - 它的工作原理是:
leftShift(leftShift(leftShift(leftShift(cout, "You are "), age), " years old!"), endl);
除了函數被調用operator<<
而不是leftShift
。
嚴格地說,沒有任何理由稱leftShift
函數需要左移,同樣也沒有理由稱爲operator<<
函數必須左移。
它是運算符重載。對於流類來說,bitshift運算符被重載以用於不同的目的(讀取和寫入流)。請參閱:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
這些情況下的目的是什麼? 「cout會輸出這些東西」和「cin會使該整數等於輸入」,還是有更具體的事情發生? – CodeMan42
這幾乎只是語法上的糖。重載操作符也是可鏈接的(即它們返回流對象實例),因此可以在鏈中進行一系列'<<'調用。它看起來簡潔。 –
>>
和<<
已超載作爲料流的功能,如:
std::ostream & operator << (std::ostream &, int)
(和其他)
,使得(在這種情況下)時COUT < < 10被使用時,它調用過載函數將打印該值。
它與位移無關,只是它使用相同的操作符'< <'和'>>'。
閱讀任何關於C++的書。它會在第一章或第二章中向你解釋一切。 –
[C++書籍的最佳列表](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –
當他們對某個語言的某個方面有特殊疑問時,告訴某人「只是閱讀這本書」是沒有用的。 OP顯然至少知道_some_ C++。當你不知道它叫什麼(在這種情況下操作符超載)時,你不能在Google或某本書的索引中搜索某些內容。 –