先给出一段错误的友元函数的代码:
#include <iostream>
using namespace std;
class Myclass
{public:
Myclass (int a,int b) { x=a;y=b;}
friend void copy(Myclass & my);
void print( )
{ cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
private:
int x,y;
};
void copy(Myclass & my)
{
x=my.x;
y=my.y;
}
int main()
{
Myclass m1(1,2);
Myclass m2(3,4);
m1.print();
m2.print();
copy(m1);
m2.print();
return 0;
}
有如下类的定义。类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。(有两种方法即用成员函数和友元函数实现)
友元函数的写法:
#include <iostream>
using namespace std;
class Myclass
{
public:
Myclass(int a, int b)
{
x = a;
y = b;
}
void print() const
{
cout << "x=" << x << endl;
cout << "y=" << y << endl;
}
private:
int x, y;
friend void copy(Myclass &m1, const Myclass &m2);
};
void copy(Myclass &m1, const Myclass &m2)
{
m1.x = m2.x;
m1.y = m2.y;
}
int main()
{
Myclass m1(1, 2);
Myclass m2(3, 4);
m1.print();
m2.print();
copy(m2, m1);
m2.print();
return 0;
}
成员函数的写法:
#include <iostream>
using namespace std;
class Myclass
{public:
Myclass (int a,int b) { x=a;y=b;}
void copy(Myclass & my);
void print( )
{ cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
private:
int x,y;
};
void Myclass::copy(Myclass & my)
{
x=my.x;
y=my.y;
}
int main()
{
Myclass m1(1,2);
Myclass m2(3,4);
m1.print();
m2.print();
m2.copy(m1);
m2.print();
return 0;
}