c++学习札记 友元成员

   刚学完友元函数,现在来学习友元成员。友元函数是通过一个外部的函数来访问类的私有成员,那么能不能让类的一个成员函数去访问另外类的私有数据那,答案是肯定,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类中的私有数据了。

 

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值