C++学习(5)

关于类的运算符重载:

分为两种: 1)将运算符重载为类的友元函数

      2)将运算符重在为类的成员函数

一:

 1 //friend 函数类型   operator 运算符(形参表){}

 2 //通过重载 ,进行复数运算

 3 #include <iostream>

 4 using namespace std;

 5 

 6 class Complex

 7 {

 8     private:

 9         double real;

10         double image;

11     public:

12     Complex(double real=0.0,double image=0.0)

13     {

14         this->real=real;

15         this->image=image;

16     }

17     void display()

18     {

19         cout<<"("<<real<<","<<image<<")"<<endl;

20     }

21     friend Complex operator + (Complex A, Complex B)

22     {

23         return Complex (A.real+B.real,A.image+B.image);

24     }

25     friend Complex operator - (Complex A, Complex B);

26     friend Complex operator - (Complex A);      //  重载取负为友元函数

27     friend Complex operator ++ (Complex &A);    //  重载前置++为友元函数

28     friend Complex operator ++ (Complex &A, int); // 重载后置++为友元函数

29 };

30 

31 Complex operator -(Complex A,Complex B)

32 {

33     return Complex(A.real-B.real,A.image-B.image);

34 }

35 

36 Complex operator -(Complex A)

37 {

38     return Complex(-A.real,-A.image);

39 }

40 

41 Complex operator ++(Complex &A)

42 {

43     return Complex(++A.real,A.image);

44 }

45 

46 Complex operator ++(Complex &A,int)

47 {

48     return Complex(A.real++,A.image);

49 }

50 

51 int main()

52 {

53     Complex A(100.0,200.0),B(-10.0,20.0),C;

54     cout<<"A=", A.display();

55     cout<<"B=", B.display();

56     C=A+B;

57     cout<<"C=A+B=", C.display();

58     C=A-B;

59     cout<<"C=A-B=", C.display();

60     C=-A+B;

61     cout<<"C=-A+B", C.display();

62     C=A++;

63     cout<<"C=A++, C=", C.display();

64     C=++A;

65     cout<<"C=++A, C=", C.display();

66     C=A+5;

67     C.display();

68     return 0;

69 }

二:

 1 //重载为类的成员函数

 2 // 返回类型 类名::operator 运算符(形参表)

 3 #include <iostream>

 4 using namespace std;

 5 class Complex

 6 {

 7     private:

 8         double real;

 9         double image;

10     public:

11         Complex(double real=0.0,double image=0.0)

12         {

13             this->real=real;

14             this->image=image;

15         }

16         void display()

17         {

18             cout<<"("<<real<<","<<image<<")"<<endl;

19         }

20         Complex operator + (Complex B);

21         Complex operator - (Complex B);

22         Complex operator - ();          //取负重载成员函数

23         Complex operator ++ ();         //前置++重载成员函数

24         Complex operator ++ (int);      //后置--重载成员函数

25 

26 };

27 Complex Complex::operator + (Complex B)

28 {

29     return Complex(real+B.real,image+B.image);

30 }

31 

32 Complex Complex::operator - (Complex B)

33 {

34     return Complex(real+B.real,image+B.image);

35 }

36 

37 Complex Complex::operator - ()

38 {

39     return Complex(-real,-image);

40 }

41 

42 Complex Complex::operator ++()

43 {

44     return Complex(++real,image);

45 }

46 

47 Complex Complex::operator ++(int)

48 {

49     return Complex(real++,image);

50 }

51 

52 int main()

53 {

54     Complex A(100.0,200.0),B(-10.0,20.0),C;

55     cout<<"A=", A.display();

56     cout<<"B=", B.display();

57     C=A+B;

58     cout<<"C=A+B=", C.display();

59     C=A-B;

60     cout<<"C=A-B=", C.display();

61     C=-A+B;

62     cout<<"C=-A+B", C.display();

63     C=A++;

64     cout<<"C=A++, C=", C.display();

65     C=++A;

66     cout<<"C=++A, C=", C.display();

67     C=A+5;

68     C.display();

69     return 0;

70 }

你可能感兴趣的:(C++)