#include<iostream>
using namespace std;
class Complex
{
public:
Complex(double r = 0, double i = 0);
void Show();
~Complex();
friend Complex operator + (const Complex& c1, const Complex& c2);
private:
double real;
double imag;
};
Complex::Complex(double r, double i)
{
real = r;
imag = i;
}
Complex operator + (const Complex& c1, const Complex& c2)
{
Complex temp;
temp.real = c1.real + c2.real;
temp.imag = c1.imag + c2.imag;
return temp;
}
void Complex::Show()
{
cout << real << "+" << imag << "i" << endl;
}
Complex::~Complex()
{
}
int main()
{
Complex a(1, 2), b(3.0, 4.0);
b = 20 + a;
/*
"+"重载为类的友元函数,主函数的语句b = 20 + a;相当于调用“b = operator+(a,b)”
设有双目运算符B,如果要重载B为类的友元函数,则该友元函数应有两个参数,分别为运算符的两个运算对象,
重载后,表达式oprd1 B oprd2等同于调用函数operator B(oprd1,oprd2).
将“+”重载为类的友元函数即可实现实数与复数的加法运算,例如
b = 20+a;
对于单目运算符,也可以重载为类的友元函数,该友元函数有一个参数,前置自增和自减运算符重载为类的友元函数时,
该函数有一个参数,即该类的对象;
后置自增和自减运算符重载为类的友元函数时,有两个参数,第一个为该类的对象,第二个是一个整形参数
*/
cout << "b=";
b.Show();
return 0;
}
运算符重载为友元函数,反复理解
最新推荐文章于 2023-07-04 22:32:56 发布
本文展示了如何使用C++定义一个复数类`Complex`,包括构造函数、析构函数、显示方法以及重载加法运算符。通过友元函数实现复数与实数的相加,并在`main`函数中进行演示。这个例子说明了C++中类的友元函数如何增强类的功能,以及如何处理不同类型的对象相加操作。
摘要由CSDN通过智能技术生成