欢迎来到天天文库
浏览记录
ID:6165318
大小:850.50 KB
页数:34页
时间:2017-11-14
《c++运算符重载、模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、目录12.1运算符重载12.2模板12.3小结112.1运算符重载用“+”、“-”能够实现复数的加减运算吗?实现复数加减运算的方法——重载“+”、“-”运算符运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为。212.1.1运算符重载的规则C++几乎可以重载全部的运算符,而且只能够重载C++中已经有的。不能重载的运算符举例:“.”、“.*”、“::”、“?:”重载之后运算符的优先级和结合性都不会改变。运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。两种重
2、载方式:重载为类的非静态成员函数和重载为非成员函数。312.1运算符重载12.1.2运算符重载为成员函数声明形式函数类型operator运算符(形参){......}重载为类成员函数时参数个数=原操作数个数-1(后置++、--除外)重载为非成员函数时参数个数=原操作数个数,且至少应该有一个自定义类型的形参。412.1运算符重载12.1.2运算符重载为成员函数(续)双目运算符B如果要重载B为类成员函数,使之能够实现表达式oprd1Boprd2,其中oprd1为A类对象,则B应被重载为A类的成员函数,形参类型应该是
3、oprd2所属的类型。经重载后,表达式oprd1Boprd2相当于oprd1.operatorB(oprd2)512.1运算符重载例12-1(教材例8-1)复数类加减法运算重载—成员函数形式将“+”、“-”运算重载为复数类的成员函数。规则:实部和虚部分别相加减。操作数:两个操作数都是复数类的对象。612.1运算符重载——12.1.2运算符重载为成员函数例12-1(续)#includeusingnamespacestd;classComplex{//复数类定义public://外部接口Comp
4、lex(doubler=0.0,doublei=0.0):real(r),imag(i){}//构造函数Complexoperator+(constComplex&c2)const;//运算符+重载成员函数Complexoperator-(constComplex&c2)const;//运算符-重载成员函数voiddisplay()const;//输出复数private://私有数据成员doublereal;//复数实部doubleimag;//复数虚部};712.1运算符重载——12.1.2运算符重载为成员函
5、数例12-1(续)ComplexComplex::operator+(constComplex&c2)const{//重载运算符函数实现returnComplex(real+c2.real,imag+c2.imag);//创建一个临时无名对象作为返回值}ComplexComplex::operator-(constComplex&c2)const{//重载运算符函数实现returnComplex(real-c2.real,imag-c2.imag);//创建一个临时无名对象作为返回值}voidComplex::
6、display()const{cout<<"("<7、使用重载运算符完成复数加法cout<<"c3=c1+c2=";c3.display();return0;}912.1运算符重载——12.1.2运算符重载为成员函数例12-1(续)程序输出的结果为:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)1012.1运算符重载——12.1.2运算符重载为成员函数运算符成员函数的设计前置单目运算符U如果要重载U为类成员函数,使之能够实现表达式Uoprd,其中oprd为A类对象,则U应被重载为A类的成员函数,无形参。经重载后,表8、达式Uoprd相当于oprd.operatorU()1112.1运算符重载——12.1.2运算符重载为成员函数运算符成员函数的设计(续)后置单目运算符++和--如果要重载++或--为类成员函数,使之能够实现表达式oprd++或oprd--,其中oprd为A类对象,则++或--应被重载为A类的成员函数,且具有一个int类型形参。经重载后,表达式oprd++相当于oprd.operator
7、使用重载运算符完成复数加法cout<<"c3=c1+c2=";c3.display();return0;}912.1运算符重载——12.1.2运算符重载为成员函数例12-1(续)程序输出的结果为:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)1012.1运算符重载——12.1.2运算符重载为成员函数运算符成员函数的设计前置单目运算符U如果要重载U为类成员函数,使之能够实现表达式Uoprd,其中oprd为A类对象,则U应被重载为A类的成员函数,无形参。经重载后,表
8、达式Uoprd相当于oprd.operatorU()1112.1运算符重载——12.1.2运算符重载为成员函数运算符成员函数的设计(续)后置单目运算符++和--如果要重载++或--为类成员函数,使之能够实现表达式oprd++或oprd--,其中oprd为A类对象,则++或--应被重载为A类的成员函数,且具有一个int类型形参。经重载后,表达式oprd++相当于oprd.operator
此文档下载收益归作者所有