• 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# Timer和多线程编程、委托、异步、Func/Action
    Tomcat汇总-部署多个项目(不同端口)
    数据库汇总(MySQL教材)
    基础知识
    常用工具&网址
    Phython开发
    单元测试
    软件项目过程和文档
  • 原文地址:https://www.cnblogs.com/shenshuyang/p/2643249.html
Copyright © 2020-2023  润新知