【ThinkingInC++】61、非成员运算符
2015-12-10 15:41
459 查看
非成员运算符
当操作者的左侧是不同的类时。运算符重载不可能是正确的类中。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; }
请恭喜我的叔叔
相关文章推荐
- C++ Primer Plus第六版 第十五章 编程练习答案
- C++中的强制类型转换
- C++ 10模板方法模式
- C++库一览
- c++获取屏幕大小
- c++管理对象之间动态的多重连接
- C++ 判断char* 是否为空
- C++多态性
- C++11 学习笔记 基于范围的for循环
- 推荐C++ Primer 第五版
- C++获取可使用的COM口列表
- Cpp--STL的组成
- Effective C++ 一个简单的 String 类的 Reference Counting 实现(C++)
- C++通过ANE发送中文字符串到AS防止乱码的处理
- Effective C++学习笔记
- 《C++标准程序库》笔记之三
- c++ vector 需要注意的地方
- C++11 并发实战阅读笔记(2)
- 【Codeforces Round 335 (Div 2) A】【水题】Magic Spheres 三种类型物品兑换比例2:1.cpp
- C++中的静态绑定和动态绑定