非成员运算符

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

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)个数初始化为0IntArray() {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://www.cnblogs.com/yxwkf/p/5036252.html

【ThinkingInC++】61、非成员运算符相关推荐

  1. 重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符...

    一.基本概念 重载的运算符时具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.和其他函数一样,重载的运算符也包含返回类型.参数列表以及函数体. 重载运算符函数的参数 ...

  2. C++知识点40——运算符的重载概念与分数类实现(中)

    接上篇文章https://blog.csdn.net/Master_Cui/article/details/109515376,继续实现分数类和相关运算符的重载 3.重载算术运算符和复合赋值运算符 算 ...

  3. 2021/6/20~22 每天学习python 30分钟 -了解python - python的运算符

    文章目录 python算数运算符+-*/ python比较运算符 python赋值运算符 Python位运算符 本篇博客介绍python的运算符号. python算数运算符±*/ 简单的+ - * / ...

  4. python中的运算符_Python中的运算符

    说完常用的数据类型,再来说下运算符.运算符用于将各种类型的数据进行运算,让静态的数据跑起来. 编程语言中的运算大致分为以下几个大类: 算术运算, 用于加减乘除等数学运算 赋值运算,用于接收运算符或方法 ...

  5. 【转】Python中的运算符

    [转]Python中的运算符 说完常用的数据类型,再来说下运算符.运算符用于将各种类型的数据进行运算,让静态的数据跑起来. 编程语言中的运算大致分为以下几个大类: 算术运算, 用于加减乘除等数学运算 ...

  6. C++ 语言重载运算符

    C++ 语言重载运算符 当运算符被用于类类型的对象时,C++ 语言允许我们为其指定新的含义,和内置类型的转换一样,类类型转换隐式地将一种类型的对象转换成另一种我们所需类型的对象. 1. 基本概念 重载 ...

  7. 【转载】阿秀的求职笔记:基础语法篇

    本专栏内容均为复习笔试面试阶段学习的文章,部分加上了自己的注释,文章注明转载!! 为了自己更好理解+查看方便+督促自己每天学习 [争取日更25条] 重要的事情说三遍 欢迎大家去 阿秀的求职笔记 学习! ...

  8. 感觉 C++ 很简单,但为何这么多劝退的?

    上一个说C++简单的,已经被面试官问死了... 那些面试官最喜欢的就是你在简历上写"精通"或者"熟练掌握"几个字... 我以前也以为自己学明白了,后来经历的面试 ...

  9. 《C++捷径教程》目录

    第1章 C++的发展历程 1 1.1 C++的起源 1 1.1.1 C的诞生 1 1.1.2 对C++的需求 3 1.1.3 C++的诞生 3 1.2 C++的发展 4 1.3 什么是面向对象程序设计 ...

最新文章

  1. python爬虫教程入门-Python爬虫系列 - 入门教学
  2. ArcGis10安装步骤
  3. 【Linux】一步一步学Linux——systemctl命令(147)
  4. Problem Collection II 构造
  5. 军事医学研究院应晓敏组招聘博士后
  6. 解决登录页验证码不能正常显示问题
  7. 思达报表工具Style Report基础教程—用选择列表,选择树进行数据过滤
  8. 一张图概括淘宝直播背后的前端技术 | 赠送多媒体前端手册
  9. rtmp/rtsp直播源(真是有效的,网上很多都是失效的)
  10. centos系统上安装masscan
  11. LM317稳压电源设计
  12. 奥斯汀页眉怎么设置_word页眉怎么插入及删除
  13. 共同创业五年,技术总监却突然就这么离职了
  14. insist fortress g55 机械键盘得救了
  15. 少数民族高考成绩查询2021,2021少数民族高考加多少分?
  16. 电脑C盘爆满了怎么办
  17. 如何注册全部DLL文件以及DLL简要说明
  18. 【Python入门】Turtle海龟库:利用海龟画笔绘制花朵
  19. p4交换机模拟器bmv2的一些教程
  20. Dispatch barriers处理读与写的冲突

热门文章

  1. 【Tiny4412】使用dnw烧写内核
  2. 【Linux】一步一步学Linux——dpkg-statoverride命令(277)
  3. 【Android】ContentProvider和Uri详解
  4. python构建二维数组_Python中创建二维数组
  5. java(1)——用notepad++编译java(javac.exe)
  6. ansible(3)——主机列表,ssh,公钥私钥
  7. 合并两个有序链表—leetcode21
  8. php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】
  9. Zephyr应用笔记:mcuboot引导程序简单介绍
  10. c++错误之map的find()返回值类型