将运算符+与print函数修改为友元类

将运算符+与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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632