C++ 面向对象编程
友元函数:
使用1 、操作多个对象的友元函数 , 也就是这个函数可以同时操控多个类中的对象
#include<iostream>
using namespace std;
class B;
class A
{//友元函数同时操控多个类的对象 下面是一种 实现方式, 还有其他方式
int n ;
public :
A(int i ):n(i){}
friend int fun(A &, B &);
};
class B
{
int m;
public :
B(int j):m(j){}
friend int fun(A &, B &);
};
int fun(A &a, B &b)
{//友元函数的定义
return a.n + b.m;
}
int main()
{
A a(10);
B b(20);
cout<<fun(a, b)<<endl;
return 0;
}
2、 应用2 可以返回类的对象
下面直接看代码, 代码中有解释:
#include<iostream>
using namespace std;
class myclass
{
int n ;
public :
myclass() {}; //无参数构造函数
myclass(int i) { n = i;}
friend myclass add(myclass &, myclass &);
friend myclass sub(myclass &, myclass &);
void disp(){cout<<n<<endl;}
};
myclass add(myclass &a, myclass &b)
{//返回类对象的友元函数
myclass tmp;
tmp.n = a.n + b.n;
return tmp;
}
myclass sub(myclass &a, myclass &b)
{//返回类的对象的实现方式2
int m ;
m = a.n + b.n;
return myclass(m);
}
int main()
{
myclass a(20);
myclass b(10);
myclass c, d;
c = sub(a, b);
cout<<" n = "<<endl;
c.disp();
d = add(a,b);
cout<<" n = "<<endl;
d.disp();
return 0;
}