来源:我的博客站 OceanicKang |《C++ 运算符重载》
#include <iostream>
class Complex
{
public:
Complex();
Complex(double r, double i);
Complex operator + (Complex &b); // 非友元
// friend Complex operator + (Complex &a, Complex &b); // 友元函数
void print();
private:
double real;
double imag;
};
Complex::Complex()
{
this -> real = 0;
this -> imag = 0;
}
Complex::Complex(double r, double i)
{
this -> real = r;
this -> imag = i;
}
/**
* 非友元
*/
Complex Complex::operator + (Complex &b)
{
return Complex(this -> real + b.real, this -> imag + b.imag);
}
/*
友元函数 不属于Complex类 不要写::域运算符
Complex operator + (Complex &a, Complex &b)
{
return Complex(a.real + b.real, a.imag + b.imag);
}
*/
void Complex::print()
{
std::cout << '(' << this -> real << ',' << this -> imag << "i)" << std::endl;
}
int main()
{
Complex c1(3, 4), c2(5, -10), c3;
c3 = c1 + c2; // c1.operator+(c2) // 非友元
// operator+(c1, c2) // 友元函数
std::cout << "c1 = ";
c1.print();
std::cout << "c2 = ";
c2.print();
std::cout << "c3 = ";
c3.print();
return 0;
}