




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运算符重载输入输出:#include using namespace std;class Empstring name;double salary;public:Emp(string name=,double salary=0):name(name), salary(salary)void show()constcout name , salary endl;/友元函数,不是成员函数friend ostream& operator(istream& is,Emp& e)/也可以直接写进类中return e.salary;/输出运算符函数ostream& operator(ostream& o, const Emp& e)o , e.salary;return o;int main()const Emp e(Daniel, 100000);e.show();/cout.operator(Emp);/operator(cout,e);cout e endl;/cout.operator(e);int x = 10;/cout.operator(int);cout x endl;/cout.operator(x);cout.operator(x).operator(endl);Emp e2;cout (e2),operator(cin,e2)cin e2;cout e2 endl;单目运算符:自加,自减, 、!、-等#include using namespace std;class Personstring name;int age;public:Person(string name=,int age=0):name(name),age(age)Person& operator+()/前加加(成员函数)age+;return *this;/*friend Person& operator+(Person& p)/前加加(有元函数)p.age+;return p;*/const Person operator+(int)/后加加(成员函数)Person old = *this;age+;return old;/*friend const Person operator+(Person&p, int)/后加加(友元函数)Person old = p;p.age+;return old;*/friend ostream& operator(ostream&o,const Person&p)return ,p.age;单目运算符最好使用成员函数const Integer operator()return x;const Integer operator-()return -x;双目运算符:加减乘除。最好使用友元函数#include using namespace std;class Integerint x;public:Integer(int x=0):x(x)friendostream& operator(ostream&o,const Integer&i)return o(istream&is,Integer&i)return isi.x;/*const Integer operator+(const Integer&i)return x+i.x;*/friend const Integer operator+(const Integer&a,const Integer&b)return Integer(a.x+b.x);const Integer operator-(const Integer&i)constreturn x-i.x;friend bool operator(const Integer&a, const Integer&b)return a.xb.x;friend bool operator=(const Integer&a, const Integer&b)return a.x=b.x;赋值运算符:有时调用编译器自己的赋值运算符有错误需自己义#include using namespace std;class Dateint y,m,d;public:Date(int y,int m, int d):y(y),m(m),d(d);class Empstring name;Date* start; 定义了两个类,在第二public: 中调用第一个类作为Emp(string name=,int y=1900,int m=1,int d=1) 成员变量,需用指针:name(name) 此外构造函数,析构start = new Date(y,m,d); 函数都需从新定义。Emp()delete start;Emp(const Emp&e)name = ;start = new Date(*e.start);Emp& operator=(const Emp&e) 定义赋值运算符的基本步骤/*1、判断是否自赋值*/if(this=&e) return *this;/*2、释放自己的空间*/delete start;/*3、创建一个新的空间*/*4、拷贝数据*/start = new Date(*e.start);name = ;/*5、返回当前对象*/return *this;int main()Emp e(Daniel, 1980,2,25);Emp e2;e2 = e;/这 会使最后释放两次堆空间,从而产生错误,但运用自己定义的运符没错。e2 = e2;系统自己写的赋值运算符是这样的:#include using namespace std;class Integerint x;public:Integer(int x=0):x(x)friendostream& operator(ostream&o,const Integer&i)return oi.x;friend const Integer operator+(const Integer&a,const Integer&b)return Integer(a.x+b.x);Integer& operator=(const Integer& i)/系统中的赋值运算符cout operator= endl;x = i.x;return *this;Integer& operator+=(const Integer& i)x += i.x;return *this;类的应用:实现数组功能,而且可以自己编写函数来实现数组没有的更强大的功能。#include using namespace std;class Arrayint* data;int size;int max;public:Array(int x=0):size(0),max(x)data = new intx;bool insert(int x)if(size=max)return false;datasize = x;size+;return true;friend ostream& operator(ostream&o, const Array&a)for(int i=0; ia.size; i+)o a.datai ;return o;/只能定义成成员函数的运算符int& operator(int i)return datai;int& operator(char c)return datac-a;int& operator(double d)return data(int)(d+0.5);int main()Array a(10);/a是数组对象a.insert(10);a.insert(20);a.insert(30);a.insert(40);cout a endl;a0 = 100;/a.operator(0) = 100;a1 = 200;cout a2 endl;cout a endl;aa = 123;ab = 456;cout a endl;a1.2 = 111;a1.8 = 222;a3.4 = 333;cout a endl;不允许被用户重载的运算符n :作用域解析n .成员选择n .*通过到成员的指针做成员选择n ? : 三目运算符n sizeofn typeidn 另外,不允许对基本数据类型进行运算符重载n 不能创造运算符n 也不能违反语法定义的形式,比如,不能将%重载为一元运算 /*错误示例*/#include using namespace std;/不能重载基本数据类型的运算符,不能改变C+中内置类型的运算规则int operator+(int a, int b)return a - b;/不能创造运算符int operato
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 音乐产业版权运营与音乐版权保护法律政策分析报告
- 新能源产业绿色信贷政策执行成效2025年总结与优化建议报告
- 2023七年级数学下册 第五章 相交线与平行线5.1 相交线5.1.1 相交线说课稿 (新版)新人教版
- 2025年中国高纯钽行业市场分析及投资价值评估前景预测报告
- 2025年中国钢化玻璃潜水面镜行业市场分析及投资价值评估前景预测报告
- 第9课 体验在线应用(教案)三年级上册信息技术浙教版
- 口腔医院常规知识培训总结课件
- 新教材高中政治 9.1 矛盾是事物发展的源泉和动力说课稿1 新人教版必修4
- 16.2人体对外界信息的感知(第一课时)说课稿-2024-2025学年苏科版生物八年级上册
- 高级翻译考试题库及答案
- 2025年共青团考试题库(附答案)
- 全国数智产业发展研究报告(2024-2025)
- 2025麻精等特殊管理药品考核(医、药、护人员)试题及答案
- 2025山东淄博博山区城乡公益性岗位招聘492人笔试备考试题及答案解析
- 中职技能大赛备赛培训课件
- 新版中华民族共同体概论课件第六讲“五胡入华”与中华民族大交融(魏晋南北朝时期)-2025年版
- 六堡茶课件教学课件
- 材料作文“交流登山成功的经验”(2024年河南省中考满分作文9篇附审题指导)
- 2025年中国宽温液晶屏行业市场全景分析及前景机遇研判报告
- 小学语文高段课程标准解读
- 提高痰标本送检合格率PDCA课
评论
0/150
提交评论