C++ 友员

 

 

  接下来,我们准备为大家介绍"友员"

 

   为什么要使用"友员"?原因是,我们希望在普通函数中可以直接访问类中的私有或保护的属性。

 

   友员的特性:

   (1)友员其实是类中所定义的一个方法,只是在方法定义的最前面添加了关键字friend。

   (2)友员定义的位置可以在类中任何的位置,即可以在public区,也可以在protected或private区。

   (3)友员方法的实现必须在类外进行。

 

   友员定义的语法格式:

 

   friend 类型关键字 方法名(参数类型 参数1,参数类型 参数2,...参数类型 参数n );

 

   语法格式分析:

     友员定义的格式与普通方法一样,只是在定义的最开始添加了friend关键字。

 

   友员实现的语法格式:

 

    类型关键字 方法名(参数类型 参数1,参数类型 参数2,...参数类型 参数n )

    {

        代码;

   }

 

    语法格式分析:

      友员方法的实现与普通函数实现的格式是一样的。

 

 

 

  接下来,我们结合例子作进一步的学习

 

   例子:

    class Person  //定了一个描述人的类Person

    {

      private:

        int x;    //私有属性x

      protected:

        int y;   //保护属性y

      public:

        char *Name;     //名字属性

        int Life;       //生命属性

        static int Count;   //记录人数属性      

 

        friend void fn();   //友元方法fn

 

        Person()

        {

          Life = 10;

          Count = Count + 1;  //每次定义一个象,就计数加1

        }

 

        ~Person()

        {

          Life = 0;

          Count = Count - 1;  //对象生命周期结束时,就计数减1

        }

    }

 

    int Person::Count = 0; //对静态属性Count分配内存空间并赋初值0;

 

    void fn()   //友元方法的实现

    {

      Person  p1;

      p1.x = 1;  //正确在友元的方法中可以通过p1对象访问私有属性x

      p1.y = 2;  //正确在友元的方法中可以通过p1对象访问保护属性y

    }

 

    void test()  //普通方法的实现

    {

      Person  p1;

      p1.x = 1;  //错误不是友元的方法,不可以在类外通过p1对象访问私有属性x

      p1.y = 2;  //错误不是友元的方法,不可以在类外通过p1对象访问保护属性y

    }

 

   

  void main()

  {

    fn();

    test();

  }

 

 

 

 

  通过上面的学习,相信大家对友元有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”

 

  要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练