如何定义友元类

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:44:59
如何定义友元类

友元类的语法形式:
class B
{
..... //B类的成员声明
friend class A; //声明A为B的友元类
.....
};
例:
class A
{
public:
void Display() { cout << x << endl; }
int Getx() { return x; }
friend class B; //B类是A类的友元类
//其他成员略
private:
int x;
}
class B
{
public:
void Set ( int i );
void Display ();
private:
A a;
};
void B::Set ( int i )
{
a.x = i; // 由于B是A的友元,所以在B的成员函数中可以访问A类对像的私有成员
}
//其他函数的实现略

友员函数的作用主要是为了提高效率和方便编程,普通函数需要直接访问一个类的保护或私有数据成员。如果没有友员机制只能将类的数据声明为公共的,但这样就破坏了数据的封装性。
定义友员函数的方式是在类定义中用关键词friend说明该函数,
它的定义格式是: friend 〈类型〉〈友员函数名〉 (〈参数表〉);
友员函数虽然定义在类体内,但它不是成员函数,可以像普通函数一样在任何地方调用。
例如:
编写一个程序求一个点到直线的距离。
分析:先设计一个点类Point,另一个类为直线类Line,根据直线方程ax2+bx+c=0,该类有三个数据,在该类中设计一个友员函数length计算一个点到直线的距离。
公式:d=abs(( ax2+bx+c)/sqrt(a^2+b^2))
#inclu