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