C++程式:使用運算子過載進行復數減法
在C++中,大多數內建運算子都可以進行運算子過載。過載的運算子是帶有關鍵字`operator`的函式,後跟定義的運算子符號。過載的運算子與任何函式一樣,都有返回型別和引數列表。
下面是一個使用運算子過載進行復數減法的程式:
示例
#include<iostream>
using namespace std;
class ComplexNum {
private:
int real, imag;
public:
ComplexNum(int r = 0, int i =0) {
real = r;
imag = i;
}
ComplexNum operator - (ComplexNum const &obj1) {
ComplexNum obj2;
obj2.real = real - obj1.real;
obj2.imag = imag - obj1.imag;
return obj2;
}
void print() {
if(imag>=0)
cout << real << " + i" << imag <<endl;
else
cout << real << " + i(" << imag <<")"<<endl;
}
};
int main() {
ComplexNum comp1(15, -2), comp2(5, 10);
cout<<"The two comple numbers are:"<<endl;
comp1.print();
comp2.print();
cout<<"The result of the subtraction is: ";
ComplexNum comp3 = comp1 - comp2;
comp3.print();
}輸出
The two comple numbers are: 15 + i(-2) 5 + i10 The result of the subtraction is: 10 + i(-12)
在上面的程式中,定義了`ComplexNum`類,它分別具有表示複數實部和虛部的變數`real`和`imag`。`ComplexNum`建構函式用於初始化`real`和`imag`的值,幷包含預設值0。如下程式碼片段所示:
class ComplexNum {
private:
int real, imag;
public:
ComplexNum(int r = 0, int i =0) {
real = r;
imag = i;
}
}作為過載運算子的函式包含關鍵字`operator`,後跟`-`,因為這是要過載的運算子。該函式減去兩個複數,並將結果儲存在物件`obj2`中。然後將此值返回給`ComplexNum`物件`comp3`。
下面的程式碼片段演示了這一點:
ComplexNum operator - (ComplexNum const &obj1) {
ComplexNum obj2;
obj2.real = real - obj1.real;
obj2.imag = imag - obj1.imag;
return obj2;
}`print()`函式列印複數的實部和虛部。如下所示。
void print() {
if(imag>=0)
cout << real << " + i" << imag <<endl;
else
cout << real << " + i(" << imag <<")"<<endl;
}
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP