【ThinkingInC++】61、非成员运算符「建议收藏」

【ThinkingInC++】61、非成员运算符

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

非成员运算符

 

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

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;

}

请恭喜我的叔叔开怀大笑

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116716.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 程序员需要学数学吗?「建议收藏」

    程序员需要学数学吗?「建议收藏」程序员需要学数学吗?

  • USB OTG简单介绍

    USB OTG简单介绍

    2021年12月14日
  • mysql的乐观锁使用_java悲观锁乐观锁定义

    mysql的乐观锁使用_java悲观锁乐观锁定义正确的理解MySQL的乐观锁,悲观锁与MVCC!首先声明,MySQL的测试环境是5.7前提概念数据库并发的三种场景乐观锁和悲观锁的澄清悲观锁乐观锁MVCC多版本并发控制总结乐观锁和悲观锁的抉择OCC,PCC,MVCC参考资料前提概念数据库并发的三种场景数据库并发场景有三种,分别为:读-读:不存在任何问题,也不需要并发控制读-写:有隔离性问题,…

  • 微博开放平台api使用[通俗易懂]

    微博开放平台api使用[通俗易懂]前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文

  • datagrip 2.4 激活_最新在线免费激活

    (datagrip 2.4 激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • idea 查看类图_idea查看方法的实现

    idea 查看类图_idea查看方法的实现以BeanFactory为例给大家展示在Idea中查看某个接口的所有的实现类图1.展示一下BeanFactory类2.选中接口右键->Diagrams(showDiagrams)3.出现一个接口类,然后点中接口右键showimplementations或者快捷键ctrl+alt+B4.出现了图然后全选或者快捷键ctrl+a,然后回车就出现了所有的关系图…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号