双目操作符重载.cpp
#include <vcl.h>
class Complex // 定义复数类
{
double real;
double imag; // 实部与虚部
public:
Complex() {
real = 0;
imag = 0;
} // 缺省构造函数
Complex(double r, double i) {
real = r;
imag = i;
} // 带参数构造函数
Complex operator +(Complex &c2); // +函数(...)
UnicodeString display();
};
UnicodeString Complex::display() {
return "(" + (UnicodeString)real + "," + (UnicodeString)imag + "i)";
}
Complex Complex:: operator +(Complex &c2) {
Complex c; // 创建对象c
c.real = real + c2.real; // real: this->real
c.imag = imag + c2.imag; // imag: this->imag
return c;
}
// this指针指向调用它的对象,如下:
// Complex c1, c2; c1+c2; //this指向c1
Unit1.cpp
// ---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "双目操作符重载.cpp"
#include "Unit1.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
Complex c1(3, 4), c2(5, -10), c3;
c3 = c1 + c2; // c3=c1.operator +(c2) ;
Memo1->Text="双目操作符重载 C++ Builder演示";
Memo1->Lines->Add("c1=" + c1.display());
Memo1->Lines->Add("c2=" + c2.display());
Memo1->Lines->Add("c1+c2=" + c3.display());
}
// ---------------------------------------------------------------------------
输出效果