• 2005-09-27

    友元关系 - [C&C++]

     友元的应用几点

    1.友元类

      class Tv
    {
      public:
        friend class Remote;

     private:

       ...... 

    }

    class Remote {}

     友元声明可以位于公有,私有,或保护部分.如上声明,Remote 可以访问Tv类的私有成员.

    2.友元成员函数

      有时候并不是可能只有一个方法需要访问另一个类的私有成员,那么只是可以只声明这个方法为友元即可.在这里还用了前向声明.顺序不能颠倒

     class Tv; 

    class Remote {}


      public:
        friend void Remote::set_chan(Tv & t, int c);

      private:

       ...... 

    }

    3.其他友元关系

     共同的友元.可以相互访问

    class Tv
    {

     friend class Remote; 
      public:
         vid set_mode_own(Remote & r,int c);

     private:

       ...... 

    }

     class Remote

    {
      public:
        friend class  Tv;

     private:

       ...... 

    }

    inline void  Tv::set_mode_own(Remote & r,int c){......}

    这里需要注意,对于使用Remote对象的Tv方法,其原型可以在Remote类声明之前声明,但是必须在Remote后面定义,以便编译器有足够的信息来编译该方法.如上的set_mode_own方法

     

     

    分享到: