C++用顶层函数重载操作符(一)
生活随笔
收集整理的這篇文章主要介紹了
C++用顶层函数重载操作符(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面章節中,我們已經學會了將操作符重載函數聲明為類的成員函數。除此之外,還可以將操作符重載函數聲明為頂層函數。
學習將操作符重載函數聲明為類成員函數時,我們不斷強調二元操作符的函數參數為一個,一元操作符重載函數不需要函數參數。如果以頂層函數的形式重載操作符時,二元操作符重載函數必須有兩個參數,一元操作符重載必須有一個參數。
將操作符重載函數聲明為頂層函數時,必須至少有一個類對象參數,否則編譯器無法區分操作符是系統內建的還是程序設計人員自己定義的,有了一個類對象參數之后,系統則會根據情況調用內建或自定的操作符。
#include <iostream> using namespace std;class complex{public:complex();complex(double a );complex (double a, double b);double getreal() const {return real;}double getimag() const {return imag;}void setreal(double a ){real =a;}void setimag(double b){imag=b;}void display() const;private:double real;double imag;};complex::complex() {real=0.0;imag=0.0; }complex::complex(double a) {real=a;imag=0.0; }complex::complex(double a, double b) {real=a;imag=b; } //打印復數void complex::display() const {cout<<real<<"+"<<imag<<"i";}//重載加法操作符 complex operator+(const complex & A,const complex &B) {complex C;C.setreal(A.getreal()+B.getreal());C.setimag(A.getimag()+B.getimag());return C; }//重載減法操作符 complex operator-(const complex & A,const complex &B) {complex C;C.setreal(A.getreal()-B.getreal());C.setimag(A.getimag()-B.getimag());return C; } //重載乘法操作符 complex operator*(const complex & A,const complex &B) {complex C;C.setreal(A.getreal()*B.getreal()-A.getimag()*B.getimag());C.setimag(A.getreal()*B.getimag()+A.getimag()+B.getreal());return C; }//重載除法操作符complex operator/(const complex &A,const complex &B) { complex C;double square=B.getreal()*B.getreal() +B.getimag()*B.getimag();C.setreal((A.getreal()*B.getreal()+A.getimag()*B.getimag())/square); C.setimag((A.getimag() * B.getreal() - A.getreal() * B.getimag())/square); return C;}int main(){complex c1(1.0,2.0);complex c2(3.0, 4.0);complex c3;c3 = c1 + c2;cout<<"c1 + c2 = ";c3.display();cout<<endl;c3 = c1 - c2;cout<<"c1 - c2 = ";c3.display();cout<<endl;c3 = c1 * c2;cout<<"c1 * c2 = ";c3.display();cout<<endl;c3 = c1 / c2;cout<<"c1 / c2 = ";c3.display();cout<<endl;return 0;} c1 + c2 = 4+6i c1 - c2 = -2+-2i c1 * c2 = -5+9i c1 / c2 = 0.44+0.08i總結
以上是生活随笔為你收集整理的C++用顶层函数重载操作符(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 重载运算符和重载函数(一)
- 下一篇: C++用顶层函数重载操作符(三)用友元优