zoukankan      html  css  js  c++  java
  • 【ThinkingInC++】61、非成员运算符

    非成员运算符

    当操作者的左侧是不同的类时。运算符重载不可能是正确的类中。

    IostreamOperatorOverloading.cpp

    /**
    
    * 书本:【ThinkingInC++】
    
    * 功能:非成员运算符
    
    * 时间:2014年10月4日14:23:25
    
    * 作者:cutter_point
    
    */
    
     
    
    //当运算符的左側是不同的类的时候,就不能吧运算符重载到类里面了。
    
    #include"../require.h"
    
    #include<iostream>
    
    #include<sstream>
    
    #include<cstring>
    
     
    
    usingnamespace std;
    
     
    
    classIntArray
    
    {
    
        enum {sz=5};
    
        int i[sz];
    
    public:
    
        //吧数组i初始化,吧数组里面sz*sizeof(*i)个数初始化为0
    
        IntArray() {memset(i, 0, sz*sizeof(*i)); }
    
        //重载[]操作符
    
        //这个左側參数是这个类,也就是IntArray[x]代表者i[x];
    
        int& operator [] (int x)
    
        {
    
            require(x >= 0 && x < sz,"IntArray::operator[] out of range");
    
            return i[x];
    
        }
    
        //两个友元函数
    
        friend ostream& operator <<(ostream& os, const IntArray& ia);
    
        friend istream& operator >>(istream& is, IntArray& ia);
    
    };
    
     
    
    ostream&operator << (ostream& os, const IntArray& ia)
    
    {
    
        for(int i=0 ; i<ia.sz ; ++i)
    
        {
    
            os<<ia.i[i];
    
            if(i != ia.sz-1)
    
                os<<", ";
    
        }
    
        os<<endl;
    
     
    
        return os;
    
    }
    
     
    
    //输入友元
    
    istream&operator >> (istream& is, IntArray& ia)
    
    {
    
        for(int i=0 ; i<ia.sz ; ++i)
    
            is>>ia.i[i];
    
     
    
        return is;
    
    }
    
     
    
    int main()
    
    {
    
        stringstream input("47 34 56 92103");  //吧字符流和这个string绑定
    
        IntArray I;
    
        input>>I;   //吧绑定的字符串输入到I中。每次以空格隔开
    
        I[4]=-1;
    
        cout<<I;
    
     
    
        return 0;
    
    }


    请恭喜我的叔叔开怀大笑


  • 相关阅读:
    Java实现花朵数
    Java实现花朵数
    Java实现花朵数
    Java实现花朵数
    Java实现花朵数
    Java实现 黑洞数
    Java实现 黑洞数
    Java实现 黑洞数
    Could not create the view: An unexpected exception was thrown.问题解决
    让 SVN (TortoiseSVN)提交时忽略指定目录
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5036252.html
Copyright © 2011-2022 走看看