[英]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.