你今天C++了沒?

關於部落格
成大工科ES103程式設計課程部落格
  • 13506

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

++ / -- operator overloading (以2X2矩陣為例)

這些跟本次作業內容非常類似~

第一版(超簡易):download
--->

第二版(加入ostream , istream):download-->

作業的功能至少要寫到像第二版一樣能input ,

第三版(助教沒時間講):
前置運算子: 先加後印
後置運算子:先印後加

桃紅色是跟第二版的差別處

#include <iostream>
#include <stdlib.h>

using namespace std;

class Matrix2D
{
  public:
         friend ostream &operator<<(ostream &, const Matrix2D &);
         friend istream &operator>>(istream &, Matrix2D & );
         Matrix2D():a11(0),a12(0),a21(0),a22(0){} //建構函式將矩陣內容設定為0
        Matrix2D &operator++()    // 宣告"++前置運算子覆載"
        {
          a11++;  a12++; a21++; a22++;
         
          return *this;
        };
        Matrix2D operator++(int) // 宣告"++後置運算子覆載"
        {
         
         
          Matrix2D temp = *this;
          a11++;  a12++; a21++; a22++;
          return temp;
        };
  private:
        int a11,a12;
        int a21,a22;
};

ostream &operator<<( ostream &output,  const Matrix2D &number)
{
   output << "| "<< number.a11 << " , " << number.a12 << " |" << endl;
   output << "| "<< number.a21 << " , " << number.a22 << " |" << endl; 
   return output;  
       
}
istream &operator>>(istream &input, Matrix2D &number )
 {
       
  input >> number.a11;
  input >> number.a12;
  input >> number.a21;
  input >> number.a22;
  return input;     
        
 }


int main()
{
 int a=1;
 ++a;
 cout<<a;//2
 
 int b=1;
 
 cout<<b++;//1
 cout<<b; //2
 Matrix2D ObjA;
 cout<<"請輸入一個數字就按enter,輸入4個數字"<<endl;
 cin>>ObjA;
 ++ObjA;
 cout<<ObjA;
 Matrix2D ObjB;
 cout<<"請輸入一個數字就按enter,輸入4個數字"<<endl;
 cin>>ObjB;
 cout<<ObjB;
 cout<<ObjB++;
 cout<<ObjB;
 
 
 system("pause");
 return 0;
}          

 

相簿設定
標籤設定
相簿狀態