paip.提升使用者體驗----自訂<<移位操作符重載

來源:互聯網
上載者:User

paip.提升使用者體驗----自訂<<移位操作符重載 




作者Attilax ,  EMAIL:1466519819@qq.com 
來源:attilax的專欄
地址:http://blog.csdn.net/attilax


 <<移位操作符重載..可以讓代碼更加自然..提升使用者體驗..
 
 標頭檔
 //////////////////
 #ifndef QDEBUGHIDEC9_H
#define QDEBUGHIDEC9_H


#include <ostream>
#include <iostream>
#include  "windows.h"
 //#include<iostream.h>
// extern ostream PrintAti;
class qDebugHideC9
{
public:
    qDebugHideC9();
public:


const qDebugHideC9& operator<<(char* str)const;//對字串型的重載
 const  qDebugHideC9& operator<<(HWND str)const ;//對字串型的重載
const  qDebugHideC9& operator<<(WINBOOL str) const;//對字串型的重載


};






#endif // QDEBUGHIDEC9_H


cpp檔案
////////////////////////
#ifndef  QDEBUGHIDEC9_cppx
#define QDEBUGHIDEC9_cppx
  #pragma once
#include "qdebughidec9.h"


qDebugHideC9::qDebugHideC9()
{
    //return *this;
}


const qDebugHideC9& qDebugHideC9::operator<<(char*str)const
{
    //printf("%s",str);
    return *this;//同樣,這裡也留意一下……
}
const  qDebugHideC9& qDebugHideC9::operator<<(HWND str)const
{
    //printf("%s",str);
    return *this;//同樣,這裡也留意一下……
}
const  qDebugHideC9& qDebugHideC9::operator<<(WINBOOL str) const
{
    //printf("%s",str);
    return *this;//同樣,這裡也留意一下……
}




qDebugHideC9 PrintAti;


#endif


調用手冊
////////////////
#include <qdebughidec9.cpp>
 
qDebugHidec922<<"--";
 
 
 參考:
 ///////////////////////
cout_百度百科.htm
嗯,我們已經基本上看出了cout的實質,不妨動動手,自己來實現一個cout的簡化版(Lite),為了區分,我們把我們設計的cout對象命名的myout,myout對象所屬的類為MyOutstream。我們要做的就是為MyOutstream類重載一系列不同類型的operator<<運算子函數,簡單起見,這裡我們僅實現了對整型(int)與字串型(char*)的重載。為了表示與iostream斷絕關係,我們不再用標頭檔iostream,而使用古老的stdio中的printf函數進行輸出,程式很簡單,包括完整的main函數,均列如下:






即,即使進行運算子多載,也只是有限自由!
friend ostream & operator << (ostream &os, const CPolynomial&)
operator是進行運算子多載的關鍵詞,它後面就是重載的運算子,左側是流,右側是流處理的對象。這樣你就可以處理如何輸入或輸出該對象




樓上說的是對的~~
一般在重載的時候用的上這個格式
ostream& operator<<(ostream &,XX);


 [cpp] view plaincopy 
 friend ostream & operator <<(ostream & output,const PhoneNumber &); 
friend istream & operator >>(istream & input,PhoneNumber &);
操作符重載函數包含兩個參數,一個是對istream/ostream的引用,另一個是對使用者自訂 類型的引用,當編譯器遇到語句 cin>>phone時,編譯器將產生函數調用operator>>(cin,phone) 同樣,編譯器督導cout<<phone時,編譯器將產生函數調用operator<<(cout,phone) 同樣,編譯器督導cout<<phone時,編譯器將產生函數調用operator<<(cout,phone)


2)注意友元函數不是類的成員函數,所以友元函數的實現和普通函數一樣,在實現時不用"::"指示屬於哪個類,只有成員函數才使用"::"範圍符號;


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.