欢迎来到天天文库
浏览记录
ID:50318781
大小:1.83 MB
页数:73页
时间:2020-03-08
《C++教程教学课件 作者 郑莉 李宁 06_自定义类型的运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章自定义类型的运算清华大学郑莉学习目标理解运算符函数与运算符重载的概念;掌握典型运算符的重载方法。2目录6.1用函数实现对象的运算6.2运算符重载函数6.2.1运算符重载为成员函数6.2.2运算符重载为非成员函数3目录(续)6.3典型运算符的重载6.3.1重载乘法运算符6.3.2重载求相反数运算符6.3.3重载相等比较运算符6.3.4重载++运算符6.3.5重载赋值运算符6.3.6重载类型转换符6.3.7重载下标访问运算符46.1用函数实现对象的运算定义一种新的数据类型,就同时需要定义对这种类型数据的操作,最基本的方法就是定义一系列能够完成各种运算的
2、函数。利用成员函数实现运算的优点是:函数中可方便地访问复数对象中的私有成员。5例6-1:实现复数的加法运算—用成员函数#includeusingnamespacestd;classComplex{protected:doublereal;//复数的实部doubleimage;//复数的虚部public:Complex(doubler=0.0,doublei=0.0){real=r;image=i;}Complexadd(Complexc);//复数与复数相加的函数Complexadd(doubler);//复数与实数相加的函数void
3、output();//用于输出复数的函数};66.1用函数实现对象的运算ComplexComplex::add(Complexc){returnComplex(real+c.real,image+c.image);}ComplexComplex::add(doubler){returnComplex(real+r,image);}voidComplex::output(){if(image<0.0)cout<<"("<4、}76.1用函数实现对象的运算例6-1(续)例6-1(续)intmain(){Complexa(1.5,2.8),b(-2.3,3.4);Complexc1,c2;c1=a.add(b);c2=b.add(4.5);c1.output();c2.output();return0;}86.1用函数实现对象的运算运行结果:(-0.8+6.2i)(2.2+3.4i)例6-1(续)6.1用函数实现对象的运算例6-2:实现复数的加法运算—用非成员函数#includeusingnamespacestd;classComplex{protected5、:doublereal;//复数的实部doubleimage;//复数的虚部public:Complex(doubler=0.0,doublei=0.0){real=r;image=i;}voidoutput();friendComplexadd(Complexc1,Complexc2);friendComplexadd(Complexc,doubler);friendComplexadd(doubler,Complexc);};106.1用函数实现对象的运算例6-2(续)voidComplex::output(){if(image<0.0)cout<<6、"("<7、real,c.image);}intmain(){Complexa(1.5,2.8),b(-2.3,3.4);Complexc1,c2,c3;c1=add(a,b);c2=add(a,2.3);c3=add(3.2,b);c1.output();c2.output();c3.output();return0;}126.1用函数实现对象的运算例6-2(续)运行结果:(-0.8+6.2i)(3.8+2.8i)(0.9+3.4i)例6-2(续)6.1用函数实现对象的运算14“运算符重载”只能针对C++中原有运算符进行重载,不能通过重载创造出新的运算符。下列五个8、运算符不允许重载.成员访问运算符.*成员指针运算符::作用域区分运算符?:条件运
4、}76.1用函数实现对象的运算例6-1(续)例6-1(续)intmain(){Complexa(1.5,2.8),b(-2.3,3.4);Complexc1,c2;c1=a.add(b);c2=b.add(4.5);c1.output();c2.output();return0;}86.1用函数实现对象的运算运行结果:(-0.8+6.2i)(2.2+3.4i)例6-1(续)6.1用函数实现对象的运算例6-2:实现复数的加法运算—用非成员函数#includeusingnamespacestd;classComplex{protected
5、:doublereal;//复数的实部doubleimage;//复数的虚部public:Complex(doubler=0.0,doublei=0.0){real=r;image=i;}voidoutput();friendComplexadd(Complexc1,Complexc2);friendComplexadd(Complexc,doubler);friendComplexadd(doubler,Complexc);};106.1用函数实现对象的运算例6-2(续)voidComplex::output(){if(image<0.0)cout<<
6、"("<7、real,c.image);}intmain(){Complexa(1.5,2.8),b(-2.3,3.4);Complexc1,c2,c3;c1=add(a,b);c2=add(a,2.3);c3=add(3.2,b);c1.output();c2.output();c3.output();return0;}126.1用函数实现对象的运算例6-2(续)运行结果:(-0.8+6.2i)(3.8+2.8i)(0.9+3.4i)例6-2(续)6.1用函数实现对象的运算14“运算符重载”只能针对C++中原有运算符进行重载,不能通过重载创造出新的运算符。下列五个8、运算符不允许重载.成员访问运算符.*成员指针运算符::作用域区分运算符?:条件运
7、real,c.image);}intmain(){Complexa(1.5,2.8),b(-2.3,3.4);Complexc1,c2,c3;c1=add(a,b);c2=add(a,2.3);c3=add(3.2,b);c1.output();c2.output();c3.output();return0;}126.1用函数实现对象的运算例6-2(续)运行结果:(-0.8+6.2i)(3.8+2.8i)(0.9+3.4i)例6-2(续)6.1用函数实现对象的运算14“运算符重载”只能针对C++中原有运算符进行重载,不能通过重载创造出新的运算符。下列五个
8、运算符不允许重载.成员访问运算符.*成员指针运算符::作用域区分运算符?:条件运
此文档下载收益归作者所有