刚学完友元函数,现在来学习友元成员。友元函数是通过一个外部的函数来访问类的私有成员,那么能不能让类的一个成员函数去访问另外类的私有数据那,答案是肯定,c++提供了这一功能,可以在类中声明友元成员。
假定有两个类class boy,class girl.如果要让boy类具有访问girl类私有数据的方法,只要在girl类中声明boy类的某一成员函数是boy类的友元成员就可以了。
// 使用友元成员函数访问另一个类
#include <iostream.h> #include <string.h> class girl; //向前引用 class boy{ char *name; int age; public: boy(char *N,int A) { name=new char[strlen(N)+1]; strcpy(name,N); age=A; } void disp(girl &); //声明disp()为类boy的成员函数 ~boy(){delete name;} };
class girl{ char *name; int age; public: girl(char *N,int A) { name=new char[strlen(N)+1]; strcpy(name,N); age=A; } friend void boy::disp(girl &); //声明类boy的成员函数disp()为类girl的友元函数
~girl(){delete name;} };
void boy::disp(girl &x) { cout<<"boy\'s name is:"<<name<<",age:"<<age<<endl; //访问本类对象成员
cout<<"girl\'s name is:"<<x.name<<",age:"<<x.age<<endl; //访问友元类对象成员
} void main() { boy b("chen hao",25); girl g("zhang wei",18); b.disp(g); }
|
通过上边的例子,可以知道,如果一个A类的成员函数能够访问另外一个B类的私有数据,只要将A的成员函数在B类中声明为B类的友元成员就可以了。声明的格式入下:
friend void boy::disp(girl &); //声明类boy的成员函数disp()为类girl的友元函数
|
这阳,boy类的方法disp(),就可以访问girl类中的私有数据了。
阅读(783) | 评论(0) | 转发(0) |