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