我剛剛開始學習基本的C++語法,對於遇到的一段代碼我有點困惑。運算符重載C++ - 重載輸出「<<」運算符
對於一個類中創建名爲MyString的,有一個運算符重載定義爲:
ostream& operator<<(ostream& os, const MyString& s)
{
os << s.data;
return os;
}
然後在某些驅動程序功能的語句:
cout << s3 << endl;
是跑步,其中S3是對象類型MyString的。結果打印出s3的值。
我不太明白這個聲明是如何運作的。在對它進行調整後,它看起來像是一次拷貝構造函數被調用,然後3個對象被解構。這條線如何工作?它看起來像運營商接受一個ostream和MyString的引用,但不是endl都不?還有,爲什麼只有在使用「< <」的兩個實例時纔會調用1個副本構造函數?也許我甚至沒有提出正確的問題,或者我的問題甚至沒有意義,因爲我對這些方面正在發生的事情感到困惑。如果是這樣的話,是否有人可以僅僅闡述一下正在發生的事情?
你從哪裏學習C++書? –
這太寬泛了,在這裏回答,你需要參考一本好書tbh。 – Nim
C++ Primer 4th Ed。,by Lippman – KWJ2104