【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;
}
请恭喜我的叔叔
【ThinkingInC++】61、非成员运算符的更多相关文章
- Python中的运算符
说完常用的数据类型,再来说下运算符.运算符用于将各种类型的数据进行运算,让静态的数据跑起来. 编程语言中的运算大致分为以下几个大类: 算术运算, 用于加减乘除等数学运算 赋值运算,用于接收运算符或方法 ...
- 【转】Python中的运算符
[转]Python中的运算符 说完常用的数据类型,再来说下运算符.运算符用于将各种类型的数据进行运算,让静态的数据跑起来. 编程语言中的运算大致分为以下几个大类: 算术运算, 用于加减乘除等数学运算 ...
- [C++ Primer] : 第14章: 重载运算符与类型转换
基本概念 重载运算符是具有特殊名字的函数: 它们的名字由关键字operator和其后要定义的运算符号共同组成. 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多. 对于二元运算符来说, 左侧 ...
- 【C++】C++中重载运算符和类型转换
输入输出运算符 输入输出运算符 输入输出运算符 算术和关系运算符 相等运算符 关系运算符 赋值运算符 复合赋值运算符 下标运算符 递增和递减运算符 成员访问运算符 函数调用运算符 lambda是函数对 ...
- C++——使用类
一.运算符重载 1.运算符重载 C++允许将运算符重载扩展到用户定义的类型. 要重载运算符,需使用被称为运算符函数的特殊函数形式.运算符函数的格式如下: operatorop(argument lis ...
- Tomcat启动过程原理详解
基于Java的Web 应用程序是 servlet.JSP 页面.静态页面.类和其他资源的集合,它们可以用标准方式打包,并运行在来自多个供应商的多个容器.Web 应用程序存在于结构化层次结构的目录中,该 ...
- python之第一个例子hello world
python用缩进(四个空格,不是teble)来区分代码块 1. coding=utf-8 字符编码,支持汉字 #!/usr/bin/env python# coding=utf-8print ...
- 参数依赖查找(ADL,Argument-dependent lookup)
参数依赖查找(Argument-dependent lookup),又称 ADL 或 Koenig 查找,是一组于函数调用表达式查找非限定函数名的规则,包含对重载运算符的隐式函数调用.在通常非限定名称 ...
- C++笔记--抽象机制
类 一个类就是一个用户定义类型 一个结构体也是一种类.(成员函数),因为不同的结构体中可能会有相同的名字的成员函数,所以我们在定义成员函数的时候就必须给出有关结构体的名字 void Data::ini ...
随机推荐
- MySQL错误:You are using safe update mode and you tried to update a table without a WHERE that uses a K
转载自:http://blog.csdn.net/dragonpeng2008/article/details/7279590 Error: 1175 SQLSTATE: HY000 (ER_UPDA ...
- Android内存管理
首先Android理机制相当复杂.想要讲清楚比較困难.其次对于绝大多数用户来说.仅仅关心内存够不够用,至于内存怎样管理的这样的技术细节,不是用户须要去考虑的,写这样一个专题有没有意义?毕竟我们是用手机 ...
- A Game of Thrones(13) - Tyrion
The north went on forever. Tyrion Lannister knew the maps as well as anyone, but a fortnight on the ...
- 联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者
联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者 首页 > 联系我们 我们的联系方式如下: 029 - 82542052(陕西 西安) 13389148466 或 13571845 ...
- Android 检測网络是否连接
权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <u ...
- 在word 中复选框划勾或叉的方法
输入大写字母R.大写字母Q ,然后将字体改为Wingdings 2, 就分离得到带框的勾和叉.
- Help Johnny-(类似杭电acm3568题)
Help Johnny(类似杭电3568题) Description Poor Johnny is so busy this term. His tutor threw lots of hard pr ...
- linux+nginx+mysql+php
LNMP(linux+nginx+mysql+php)服务器环境配置 一.简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为 “engine X”, 是一个高性能的 ...
- Home · chineking/cola Wiki
Home · chineking/cola Wiki Home Cola Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节.任务会自动分配到多台机器上,整个过程对 ...
- HTML5游戏开发进阶指南
<HTML5游戏开发进阶指南> 基本信息 作者: (印)香卡(Shankar,A.R.) 译者: 谢光磊 出版社:电子工业出版社 ISBN:9787121212260 上架时间:20 ...