将运算符+与print函数修改为友元类
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;image=0;}
Complex(double r,double i):real(r),image(i){}
void print();
Complex operator+(Complex &c1);
private:
double real;
double image;
};
void Complex::print()
{
cout<<"("<<real<<","<<image<<"i)";
}
Complex Complex :: operator+(Complex &c2)
{
return Complex(real+c2.real,image+c2.image);
}
int main()
{
Complex c1(5.5,7.5),c2(3.6,4.2),c3;
c3=c1+c2;
cout<<"c1=";
c1.print();
cout<<endl;
cout<<"c2=";
c2.print();
cout<<endl;
cout<<"c3=";
c3.print();
cout<<endl;
return 0;
}
函数前面加friend,函数申明放到类外面
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;image=0;}
Complex(double r,double i):real(r),image(i){}
friend void print(Complex &c);
friend Complex operator+(Complex &c1,Complex &c2);
private:
double real;
double image;
};
void print(Complex &c)
{
cout<<"("<<c.real<<","<<c.image<<"i)";
}
Complex operator+(Complex &c1,Complex &c2)
{
return Complex(c1.real+c2.real,c1.image+c2.image);
}
int main()
{
Complex c1(5.5,7.5),c2(3.6,4.2),c3;
c3=c1+c2;
cout<<"c1=";
print(c1);
cout<<endl;
cout<<"c2=";
print(c2);
cout<<endl;
cout<<"c3=";
print(c3);
cout<<endl;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!