1. 程式人生 > >C++基礎知識複習--運算子過載(非成員函式過載和成員函式過載)

C++基礎知識複習--運算子過載(非成員函式過載和成員函式過載)

#include<iostream>
using namespace std;


class Complex {
private:
float Vector_x;
float Vector_y;
public:



Complex(float x = 0, float y = 0) {
Vector_x = x;
}
float getVector_x()
{
return Vector_x;
}
float getVector_y()
{
return Vector_y;
}

//友元函式以訪問類的私有成員

Complex operator +(Complex);
friend istream & operator >>(istream &in, Complex &A);
friend ostream & operator <<(ostream &out, Complex &A);
friend Complex operator -(Complex C1, Complex C2);

void DisplaySum()
{
if (Vector_y > 0)
cout <<"兩個向量的向量和為: ("<<Vector_x << ',' << Vector_y << ")" << endl;
else if (Vector_y < 0)
cout << "兩個向量的向量和為: ("<<Vector_x <<','<< Vector_y << ")" << endl;
else
cout << Vector_x << endl;
}
};


//過載輸入運算子
istream & operator >>(istream &in, Complex &A)
{
in>>A.Vector_x>>A.Vector_y;
return in;
}


//過載輸出運算子
ostream & operator <<(ostream &out, Complex &A) 
{
out << A.Vector_x <<", "<< A.Vector_y;
return out;
}
//非成員函式過載
Complex operator -(Complex C1, Complex C2) {
Complex Temp;
Temp.Vector_x= C1.getVector_x()- C2.getVector_x();
Temp.Vector_y = C1.getVector_y() - C2.getVector_y();
return Temp;
}


//成員函式過載
Complex Complex::operator +(Complex Plus)
{
Complex temp;
temp.Vector_x = this->Vector_x + Plus.Vector_x;
temp.Vector_y = this->Vector_y + Plus.Vector_y;
return temp;
}


int main()
{
Complex C1;
Complex C2;
Complex Sum;
cout << "請輸入第一個向量C1: ";
cin >> C1;
cout << "請輸入第二個向量C2: ";
cin >> C2;
Sum = C1 + C2;
cout << "兩向量的和 C1+C2(" << Sum<<")"<<endl;
Sum = C1 - C2;
cout << "兩向量的差 C1-C2(" << Sum << ")"<<endl;

return 0;
}
以上為C++的運算子過載。