【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;

}

请恭喜我的叔叔开怀大笑

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Intellij IDEA 最全实用快捷键整理(长期更新)[通俗易懂]

    Intellij IDEA 最全实用快捷键整理(长期更新)[通俗易懂]IntellijIDEA最全实用快捷键整理(长期更新)正文前:1.IDEA内存优化(秒开的快感!!)因机器本身的配置而配置:\IntelliJIDEA8\bin\idea.exe.vmoptions//(根据你的配置变大!!)——————————————Xms2048m-Xmx2048m-XX:MaxPermSize=512m…

    2022年5月12日
    78
  • Java中如何声明数组「建议收藏」

    Java中如何声明数组「建议收藏」Java语言声明数组有两种形式,以一维数组为例:数组类型 数组名 []; 这种方式是C语言书写习惯数组类型 [] 数组名; 这种方式是Java书写习惯数组的声明方法:数组类型[]数组名={em1,em2,em3,…,emN};//声明数组的时候初始化,一共N个元素,例如:int[]array={3,5,4,8,12,5};//一共六个元素数组类型[]数组名=n

    2022年6月2日
    30
  • java常识-java怎么换行「建议收藏」

    java常识-java怎么换行「建议收藏」文章目录”\r”和”\n”的区别”\r”和”\n”的由来回车键和输入的”\n”有不同吗?系统影响java使用换行符的几种方式“\r”和”\n”的区别回车\r本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即CarriageReturn换行\n本义是光标往下一行(不一定到下一行行首),并不移动左右。n的英文newline,控制字符可以写成LF,即LineFeed也就是说,如果想要到下一行行首,一般的写法应该是”\r\n”,0D0A,即ASCII码对应的‘\r

    2022年7月7日
    91
  • linux命令行安装jenkins插件,Linux 安装Jenkins[通俗易懂]

    linux命令行安装jenkins插件,Linux 安装Jenkins[通俗易懂]图片.png图片.png1、上传下载的jenkins安装包图片.png2、执行安装命令sudorpm-ihjenkins-2.222.1-1.1.noarch.rpm图片.png自动安装完成之后会产生一下目录:/usr/lib/jenkins/jenkins.warWAR包/etc/sysconfig/jenkins配置文件/var/lib/jenkins/…

    2025年6月27日
    1
  • json学习初体验–第三者jar包实现bean、List、map创json格式

    json学习初体验–第三者jar包实现bean、List、map创json格式

    2022年1月13日
    53
  • Negative Sampling 负采样详解[通俗易懂]

    Negative Sampling 负采样详解[通俗易懂]在word2vec中,为了简化训练的过程,经常会用到NegativeSampling负采样这个技巧,这个负采样到底是怎么样的呢?之前在我的博文word2vec算法理解和数学推导中对于word2vec有了很详细的数学推导,这里主要讲解一下负采样是如何降低word2vec的复杂度的。首先我们直接写出word2vec的目标函数,假设有一句话:query=w1,w2,w3,..,wnquery=…

    2022年6月26日
    83

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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