2.練習友元函式與前向宣告
阿新 • • 發佈:2019-01-12
//實現 <<過載
//信類,傳送中轉類(郵局類)
//過載<<實現,將信件發給郵局類,讓郵局傳送輸出
//方式1過載函式是類的成員函式,
//通過友元函式實現
//通過友元類實現。
//方式2友元函式是全域性
#include <iostream> #include <string> //Sender類在上,Mail類在下 using namespace std; class Mail; class Sender//郵局類 { public: #if 1 Sender(string a = nullptr) :_addr(a) { } #endif #if 0 Sender(string const &a = nullptr) :_addr(a) { } #endif ostream& operator<<(Mail const & m); private: string _addr; }; class Mail//信件類 { friend ostream& Sender::operator<<(Mail const& m); public: #if 1 Mail(string t = nullptr,string c = nullptr) :_title(t),_content(c) { } #endif #if 0 Mail(string const &t = nullptr,string const &c = nullptr)//問題1:這樣該怎麼理解? :_title(t),_content(c) { } #endif private: string _title; string _content; }; ostream& Sender::operator<<(Mail const & m) { cout<<"addr:"<<this->_addr<<endl; cout<<"Mail:"<<m._title<<m._content<<endl; return cout; } int main() { Mail m("tttttt","asdasdasdas"); Sender s("china"); // s<<m<<"uiuioiuoiu"<<endl;//問題2,這個怎麼可以? // s<<"uiouioiuou";//這個怎麼不行了? return 0; }