C++基礎知識複習--運算子過載(非成員函式過載和成員函式過載)
阿新 • • 發佈:2019-01-08
以上為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; }