paip.提升用户体验自定义<<移位操作符重载

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)注意友元函数不是类的成员函数,所以友元函数的实现和普通函数一样,在实现时不用"::"指示属于哪个类,只有成员函数才使用"::"作用域符号;


 
原文地址:https://www.cnblogs.com/attilax/p/15199516.html