
采用友元成员函数的优点就是能让两个不相关的类,使用同一个成员函数,而不需要分别定义只属于两个类各自的成员函数,在这一点上还是采用友元函数方便一点。
在对B中的成员方法display定义为A中的友元成员函数,因为在display成员函数声明时,要放入A类形参
#includeusing namespace std; class A; //A类的提前声明 class B{ public: B(int ,int ,int); //B类构造函数声明 void display(A &); //对成员函数的声明 private: int B_length; int B_width; int B_hight; };
类外定义B类构造方法
B::B(int l,int w,int h) //定义B类的构造函数
{
B_length=l;
B_width=w;
B_hight=h;
}
对A类的构造函数、友元成员函数及成员变量的定义
class A{
public:
A(int l,int w,int h):A_length(l),A_width(w),A_hight(h){} //参数初始化表对数据成员初始化(采用之后不需要再定义类的构造函数了)
friend void B::display(A &); //声明B类中的display函数为本类的友元函数
//在非成员函数的类中声明友元成员函数时,要采用::作用域限定符 标出友元成员函数所属的类,除非友元成员函数不属于任何类
private:
int A_length;
int A_width;
int A_hight;
};
友元成员函数的定义
void B::display(A &aa)
{
cout<< aa.A_length * aa.A_width * aa.A_hight <
主函数
int main()
{
B b(20,30,40);
A a(10,20,30);
b.display(a);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)