In addition of what our OriginalGriff already said, the arguments are usually passed (for preformance reasones) as const references, namely:
#include<iostream>
using namespace std;
class complex
{
int a,b;
public:
void take(int x, int y)
{
a=x;
b=y;
}
friend complex sum(const complex & s1, const complex & s2);
void display(void)
{
cout<<"A is:"<<a<<endl;
cout<<"B is:"<<b<<endl;
cout<<"complex number is:"<<a<<"+"<<b<<"i"<<endl;
cout<<endl;
}
};
complex sum(const complex & s1, const complex & s2)
{
complex s3;
s3.a = s1.a + s2.a;
s3.b = s1.b + s2.b;
return s3;
}
int main()
{
complex c1, c2, c3;
c1.take(4,5);
c1.display();
c2.take(2,6);
c2.display();
c3=sum(c1,c2);
c3.display();
}