首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
1.重載操作符跟重載函數一樣的,只不過要區分成員的和非成員的
成員的重載操作符,第一個參數默認了是this 指針形參,所以重載操作符作為成員函數,都應該是右操作符
比如:
ostream& operator<<(ostream &out) //右操作運算符 調用方式:Screen s;s< { out<<'('< return out; } friend ostream& operator<<(ostream& out,Screen& s) //友原函數的重載操作符 { out<<'('< return out; } 上述一個成員,一個非成員重載方式,調用相應如下: s1< std::cout< 2.至于返回值,值得注意的地方是: 何時返回類型的引用值何時返回類類型,應該跟內置的操作符一致; 比如+=返回引用,+則應該返回類類型本身。 如下: Screen& operator+=(Screen& rhs) //復合賦值操作符 { height += rhs.height; width += rhs.width; *pContents += *(rhs.pContents); return *this; } friend Screen operator+(Screen& s1,Screen& s2 ) { Screen s; s.width = s1.width+s2.width; s.height = s1.height+s2.height; *(s.pContents) = *(s1.pContents)+*(s2.pContents); return s; } //可以兩種方式調用: Screen s0,s1,s2; s0=s1+s2; //隱式調用 //或者 s0=operator+(s1,s2);//我理解為顯式調用 3.函數對象 可以直接調用類的構造函數產生一個臨時對象,作為參數傳遞給函數實參 比如: Class GT_cls{ public: GT_cls(int val):bool(val){} bool operator(const string s) ; {return s.size()>=bound;} private: std::string::size_type bound; }; 然后 count_if(word.begin(),word.end(),GT_cls(6)); //count_if標準庫算法 這里GT_cls先構造臨時對象,然后count_if傳遞word對象進GT_cls然后調用函數()//C++ Primer里面的例子 再比如如下: struct IterOp{ virtual void operator()(std::vector }; struct IterAdd : public IterOp{ void operator()(std::vector }; struct IterSub : public IterOp{ void operator()(std::vector }; IterOp* ops[] = {new IterAdd, new IterSub};for (; iter != flags[index]; ops[index]->operator()(iter)) //簡單的顯式調用 總結: 由上述可以得出,重載操作符跟函數對象也是函數,只不過分顯式跟隱式而已。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |