爲了使用cout:std :: cout < < myObject,爲什麼我必須傳遞一個ostream對象?我認爲這是一個隱含的參數。operator << overloading ostream
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
感謝
爲了使用cout:std :: cout < < myObject,爲什麼我必須傳遞一個ostream對象?我認爲這是一個隱含的參數。operator << overloading 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
,和參數成爲右手側實現。 (對於二元運算符 - 一元運算符的工作方式類似。)
+1對於什麼是unsaid int問題有很好的推導 – 2010-12-03 20:38:43