欢迎来到天天文库
浏览记录
ID:41394030
大小:72.73 KB
页数:12页
时间:2019-08-24
《C用顶层函数重载操作符_C教程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C++用顶层函数重载操作符一Java教程C++用顶层函数重载操作符在前面两节中,我们是将操作符重载函数声明为类的成员函数,其实除了能将操作符重载函数声明为类的成员函数之外,我们也可以将操作符重载函数声明为顶层函数。在前面将操作符重载函数声明为类成员函数时,我们不断强调二元操作符,其函数参数为一个,一元操作符重载函数不需耍函数参数。但是一旦将操作符重载函数声明为顶层函数吋,则必须至少有一个类对象参数,否则的话编译器无法区分操作符是系统内建的还是程序设计人员白己定义的,有了-•个类对象参数之后,系统
2、则会根据情况调用内建或白定的操作符。如果以顶层函数的形式重载操作符时,二元操作符重载函数必须有两个参数,一元操作符重载必须有一个参数。例1:itincludeusingnamcspaccstd;classcomplex{public:complex();complex(doublea);complex(doublea,doubleb);doublegetreal()const{returnreal;}doublegetimagOconst{returnimag;}voidse
3、treal(doublea){real二a;}voidsetimag(doubleb){imag=b;}voiddisplay()const;private:doublereal;//复数的实部doubleimag;//复数的虚部};complex::complex(){real=0.0;imag=0.0;complex::complex(doublea)real=a;imag=0.0;complex::complex(doublea,doubleb){real=a;imag=b;}〃打印复数v
4、oidcomplex::display()const{cout<5、lex&B){complexC;C.setreal(A.getreal()-B.getreal());C.setimag(A.getimag()-B.getimag());returnC;}〃重载乘法操作符complexoperator*(constcomplex&A,constcomplex&B){complexC;C.setreal(A.getreal()*B.getreal()-A.getimagO*B.getimag());C.setimag(A.getimagO*B・getreal()6、+A.getreal()*B.getimagO);returnC;〃重载除法操作符complexoperator/(constcomplex&A,constcomplex&B)complexC;doublesquare二A.getreal()*A.getreal()+A.getimag()*A.getimagO;C.sctrcal((A・gctrceil()*B.getreal()+A.gctimag()*B.getimag())/square);C.setimag((A.getimagO*B.7、getreal()-A.getreal()*B.getimag())/square);returnC;}intmain(){complexcl(4.3,-5.8);complexc2(8.4,6.7);complexc3;c3=cl+c2;cout<<,zcl+c2二〃;c3.display();cout<8、t<setimag和setreal函数。我们以加法操作符的重载为例來看普通操作符重载函数如何作为顶层函数。加法操作符
5、lex&B){complexC;C.setreal(A.getreal()-B.getreal());C.setimag(A.getimag()-B.getimag());returnC;}〃重载乘法操作符complexoperator*(constcomplex&A,constcomplex&B){complexC;C.setreal(A.getreal()*B.getreal()-A.getimagO*B.getimag());C.setimag(A.getimagO*B・getreal()
6、+A.getreal()*B.getimagO);returnC;〃重载除法操作符complexoperator/(constcomplex&A,constcomplex&B)complexC;doublesquare二A.getreal()*A.getreal()+A.getimag()*A.getimagO;C.sctrcal((A・gctrceil()*B.getreal()+A.gctimag()*B.getimag())/square);C.setimag((A.getimagO*B.
7、getreal()-A.getreal()*B.getimag())/square);returnC;}intmain(){complexcl(4.3,-5.8);complexc2(8.4,6.7);complexc3;c3=cl+c2;cout<<,zcl+c2二〃;c3.display();cout<8、t<setimag和setreal函数。我们以加法操作符的重载为例來看普通操作符重载函数如何作为顶层函数。加法操作符
8、t<setimag和setreal函数。我们以加法操作符的重载为例來看普通操作符重载函数如何作为顶层函数。加法操作符
此文档下载收益归作者所有