• 一个程序,让你理解运算符重载操作


     1 //实现运算符重载
     2 #include<iostream>
     3 #include<cstdio>
     4 using namespace std;
     5 namespace gong
     6 {
     7     const int maxn=2;
     8 }
     9 namespace Var
    10 {
    11     int i,j;
    12 }
    13 class Matrix
    14 {
    15   public :
    16      Matrix(){};
    17     ~Matrix(){};
    18  int array[gong::maxn][gong::maxn];
    19  Matrix operator + (const Matrix & aa) const ; //实现函数a+b重载,类外定义
    20  Matrix operator - (const Matrix &aa ) const   //实现函数a-b重载
    21  {
    22      Matrix dd;
    23      using namespace gong ;
    24      using Var::i;
    25      using Var::j;
    26      for( i=0;i<maxn;i++)
    27      {
    28          for( j=0;j<maxn;j++)
    29          {
    30           dd.array[i][j]=array[i][j]-aa.array[i][j];
    31          }
    32      }
    33      return dd;
    34  }
    35   /*注意《《,》》这样的运算符不能定义为类重载函数
    36    虽然不能“重载”为成员函数,但是可以定义为新的成员函数,只不过使用习惯和常例不符而已。
    37  */
    38  ostream operator<< (ostream &out) const 
    39  {
    40      using namespace gong ;
    41      using namespace Var;
    42      for(i=0;i<maxn ;i++)
    43      {
    44       for(j=0;j<maxn;j++)
    45       {
    46        out<<array[i][j]<<ends;
    47       }
    48        out<<endl;
    49       }
    50       return out ;
    51   }
    52 };
    53 Matrix Matrix::operator +(const Matrix & aa) const
    54 {
    55      Matrix dd;
    56      using namespace gong ;
    57      using namespace Var  ;
    58      for( i=0;i<maxn;i++)
    59      {
    60          for( j=0;j<maxn;j++)
    61          {
    62            dd.array[i][j]=array[i][j]+aa.array[i][j];
    63          }
    64      }
    65      return dd;
    66 }
    67 int main()
    68 {
    69   Matrix a,b,c;
    70   using gong::maxn;
    71   using namespace Var;
    72   for(i=0;i<maxn;i++)
    73   {
    74       for(j=0;j<maxn;j++)
    75       {
    76         scanf("%d%d",&a.array[i][j],&b.array[i][j]);
    77       }
    78   }
    79   c=a+b;
    80 //  cout<<c<<endl;
    81   c<<cout;
    82   c=a-b;
    83   c<<cout ;
    84   return 0;
    85 }

    不妨设 a[2][2]=                       b[2][2]=

                         { 1, 2                           { 1, 2

                          3 ,4}                              3 ,4}

       在vc上运算的结果为:

  • 相关阅读:
    route-over VS mesh-under
    IOS算法(三)之插入排序
    GitHub学习笔记
    Python-面向对象 (二 继承)
    POJ 3518 Prime Gap(素数题)
    struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)
    first move advantage_百度搜索
    【绿茶书情】:《SOHO小报》和《凤…
    潘石屹的SOHO小报猝死
    ASP.NET Hashtable输出JSON格式数据
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3633545.html
Copyright © 2020-2023  润新知