C++友元函数

友元是为了对c++封装性进行补充,只在类中定义,用修饰符friend修饰。众所周知,当一个类把数据成员申明为private时,除了该类的成员函数外,其他函数包括全局函数和其他类的成员函数都无法通过该类的对象访问这些private数据。一个合适的解决办法是给该类定义一个成员函数:

       

      DataType getprivate()
         { return private data;}

   然后通过类的对象的成员函数去访问private的数据。


           但是如果要获取的private数据个数比较多而且类型又各不相同,这个办法就比较复杂。这时候我们就引入了友元的概念。可以这么理解友元,友元是在某个类中赋予某个外部函数访问本类私有数据成员的权限。这个外部函数可以是全局函数,也可以是其他类的成员函数。如果是全局函数,友元的定义如下:


        void func(Myclass &m);//这个友元函数的参数必须得是想要访问的类

        class Myclass
	   {
            friend void func(Myclass &m);
    	    public:
                  ...
             private:
                ...
         };

            

         这样,外部全局函数func就可以访问Myclass的私有数据成员了。

        如果是其他类的成员函数想要访问Myclass的私有数据成员呢?把其他类定义为友元类就可以啦。


         class Other
	{...};
        class Myclass
	{
          friend class Other;
          public:
            ...
          private:
            ...
        };

          友元这个关系有两个特性:

       1.友元关系不可传递,b是a的友元,c是b的友元,不意味着c是a的友元类。

       2.友元关系是单向的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值