C++ 复数类加减法运算重载为成员函数形式
生活随笔
收集整理的這篇文章主要介紹了
C++ 复数类加减法运算重载为成员函数形式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
運算符的重載形式有兩種,即重載為類的非靜態成員函數和重載為非成員函數。運算符重載為類的成員函數的一般語法形式為:
返回類型 operator 運算符(形參表){函數體 }運算符重載為非成員函數的一般語法形式為:
返回類型 operator 運算符(形參表){函數體 } #include <iostream>using namespace std;class Complex{ // 復數類定義 private:double real; // 復數實部 double imag; // 復數虛部 public:Complex(double r = 0.0, double i = 0.0) : real(r), imag(i){} // 構造函數 Complex operator+(const Complex &c2) const; // 運算符 + 重載成員函數 Complex operator-(const Complex &c2) const; // 運算符 - 重載成員函數 void display() const; // 輸出復數 };Complex Complex::operator+(const Complex &c2) const{ // 重載運算符函數實現 return Complex(real + c2.real, imag + c2.imag); // 創建一個臨時無名對象作為返回值 }Complex Complex::operator-(const Complex &c2) const{ // 重載運算符函數實現 return Complex(real - c2.real, imag - c2.imag); // 創建一個臨時無名對象作為返回值 } void Complex::display() const{cout << "(" << real << "," << imag << ")" << endl; }int main(){Complex *complex1 = new Complex(5, 4); // 定義復數類的對象 Complex *complex2 = new Complex(2, 10);Complex *complex3 = new Complex();cout << "complex1 = ";complex1 -> display();cout << "complex2 = ";complex2 -> display();*complex3 = *complex1 - *complex2; // 使用重載運算符完成復數減法 cout << "complex3 = complex1 - complex2 =";complex3 -> display();*complex3 = *complex1 + *complex2; // 使用重載運算符完成復數加法 cout << "complex3 = complex1 + complex2 =";complex3 -> display();delete complex3;delete complex2;delete complex1;return 0; }調用Complex構造函數創建一個臨時對象并返回它。
Complex Complex::operator+(const Complex &c2) const{ // 重載運算符函數實現 return Complex(real + c2.real, imag + c2.imag); // 創建一個臨時無名對象作為返回值 }Complex Complex::operator-(const Complex &c2) const{ // 重載運算符函數實現 return Complex(real - c2.real, imag - c2.imag); // 創建一個臨時無名對象作為返回值 }也可以改寫成如下形式返回函數值:
Complex Complex::operator+(const Complex &c2) const{ // 重載運算符函數實現 Complex complex(real + c2.real, imag + c2.imag); // 創建一個臨時無名對象作為返回值 return complex; } Complex Complex::operator-(const Complex &c2) const{ // 重載運算符函數實現 Complex complex(real - c2.real, imag - c2.imag); // 創建一個臨時無名對象作為返回值return complex; }以非成員函數形式重載Complex的加減法運算和“<<”運算符
#include <iostream>using namespace std;class Complex{ // 復數類定義 private:double real; // 復數實部 double imag; // 復數虛部 public:Complex(double r = 0.0, double i = 0.0) : real(r), imag(i){} // 構造函數 friend Complex operator+(const Complex &c1, const Complex &c2); // 運算符 + 重載成員函數 friend Complex operator-(const Complex &c1,const Complex &c2); // 運算符 - 重載成員函數 friend ostream & operator << (ostream & out, const Complex & c); // 運算符 << 重載 };Complex operator+(const Complex &c1, const Complex &c2) { // 重載運算符函數實現 Complex complex(c1.real + c2.real, c1.imag + c2.imag); // 創建一個臨時無名對象作為返回值 return complex; }Complex operator-(const Complex &c1, const Complex &c2) { // 重載運算符函數實現 Complex complex(c1.real - c2.real, c1.imag - c2.imag); // 創建一個臨時無名對象作為返回值return complex; } ostream & operator << (ostream &out, const Complex &c){out << "(" << c.real << "," << c.imag << ")" << endl;return out; }int main(){Complex *complex1 = new Complex(5, 4); // 定義復數類的對象 Complex *complex2 = new Complex(2, 10);Complex *complex3 = new Complex();cout << "*complex1 = " << *complex1 << endl;cout << "*complex2 = " << *complex2 << endl;*complex3 = *complex1 - *complex2; // 使用重載運算符完成復數減法 cout << "*complex3 = *complex1 - *complex2" << *complex3 << endl;*complex3 = *complex1 + *complex2; // 使用重載運算符完成復數加法 cout << "*complex3 = *complex1 + *complex2" << *complex3 << endl;delete complex3;delete complex2;delete complex1;return 0; }總結
以上是生活随笔為你收集整理的C++ 复数类加减法运算重载为成员函数形式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 派生类的定义
- 下一篇: C++ 虚函数成员和纯虚函数