c++学习札记 友元类

  已经学习了友元函数、友元成员,这里要学习的是友元类,友元类的学习可以类比友元函数、友元成员的概念,友元的主要目的是为了是外部的函数能够访问该类的私有成员,只是为了这一个目的,如果访问该类私有成员的函数是一个单独的函数,不属于任何类的函数,这个函数就是友元函数,如果这个函数属于一个类,那么这个函数就叫做友元成员,而如果在类中声明友元函数的时候直接声明友元函数所属类,这个类就是该类的友元类。
 

//boy为girl的友元类
#include <iostream.h>
#include <string.h>
class girl;
class boy{
    char *name;
    int age;
public:
    boy(char *n,int d)
    {    name=new char[strlen(n)+1];
        strcpy(name,n);
        age=d;
    }
    void disp(girl &);        //声明disp()为类boy的成员函数
    ~boy(){delete name;}
};

class girl{
    char *name;
    int age;
    friend boy;            //声明类boy是类girl的友元
public:
    girl(char *n,int d)
    {    name=new char[strlen(n)+1];
        strcpy(name,n);
        age=d;
    }
    ~girl(){delete name;}
};

void boy::disp(girl &x)        //定义函数disp()为类boy的成员函数,也是类girl的友元函数
{    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);
}

 
  个人认为,存在友元成员后,友元类的存在是没有意义的,只是在如果类中有多个成员函数要访问另外一个类的私有数据时,不用把每个的成员函数都在要访问类中一一的写为友元成员,只要在要访问的类中声明该类是要访问类的友元类就可以了,对c++中,类的最大特定之一就是封装性,而时间上,没有必要让另外一个类的成员函数都有权限去访问某一个类,如果这样做的话,类的封装就完全的被破环了,同时,数据的安全性就毫无意义了。
<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>
阅读(766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值