簡體   English   中英

operator <<重載ostream

[英]operator<< overloading ostream

為了使用cout:std :: cout << myObject,為什么我必須傳遞一個ostream對象? 我認為這是一個隱含的參數。

ostream &operator<<(ostream &out, const myClass &o) {

    out << o.fname << " " << o.lname;
    return out;
}

謝謝

您沒有向ostream添加其他成員函數,因為這需要重新定義類。 你不能把它添加到myClass ,因為ostream是第一個。 你唯一能做的就是為一個獨立的函數添加一個重載,這就是你在這個例子中所做的。

只有當它是該類的成員函數時才會成為第一個參數。 因此,它將是:

class ostream {
    ...
    ostream &operator << (const myClass &o);
    ...
};

由於ostream是在課前很久寫的,所以你會看到讓你上課的問題。 因此,我們必須將運算符實現為獨立函數:

(return type) operator << ( (left hand side), (right hand side) );

當運算符被實現為類的成員函數時,左側是this ,並且參數變為右側。 (對於二元運算符 - 一元運算符的工作方式類似。)

因為你正在重載一個自由函數,而不是一個成員函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM