0 先上代码
#include <iostream>
using namespace std;
class Port {
private:
int x;
int y;
public:
Port(){}
Port(int x,int y):x(x),y(y){}
~Port(){}
friend void setPort(Port &per,int x,int y);
friend int get_x(Port &per);
friend int get_y(Port &per);
};
void setPort(Port &per,int x,int y)
{
per.x = x;
per.y = y;
}
int get_x(Port &per)
{
return per.x;
}
int get_y(Port &per)
{
return per.y;
}
int main(int argc, char **argv)
{
Port per(1,2);
cout << "x = "<<get_x(per)<<", y = "<<get_y(per)<<endl;
setPort(per,2,3);
cout << "x = "<<get_x(per)<<", y = "<<get_y(per)<<endl;
return 0;
}
1 存在的原因
由于不同的函数无法修改类的私有参数,于是如果需要使用类的私有参数,就需要定义很多的公有函数,作为参数修改的方法。
友元函数可以直接调用类的私有参数的。
2 友元函数的使用。
友元函数的申明和定义和调用和普通函数一模一样。
*不过需要在类里说明,该函数为类的友元函数。
friend void setPort(Port &per,int x,int y);
friend int get_x(Port &per);
friend int get_y(Port &per);
网友评论