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


     
  • 相关阅读:
    C#多线程编程之:集合类中Synchronized方法与SyncRoot属性原理分析
    Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
    C++:基类和派生类
    C++:友元(非成员友元函数、成员友元函数、友元类)
    C++:静态成员
    C++:向函数传递对象(对象、对象指针、对象引用)
    C++:常类型Const
    C++:对象的赋值和复制
    C++:类的组合
    C++:析构函数
  • 原文地址:https://www.cnblogs.com/attilax/p/15199516.html
Copyright © 2020-2023  润新知