您的位置:首页 > 编程语言 > C语言/C++

C++ 局部类

2016-01-13 16:09 281 查看
局部类


  在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。局部类不能被外部所继承。在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。在实践中,局部类是很少使用的。下面是一个局部类的例子。


  int a;


  void fun()


  {


  static int s;


  class A


  {


    public:


    void init(int i) { s = i; }


  };


  A m;


  m.init(10);


  }

局部类的另一个用途是用来实现类型转化,如下代码:


class Interface


{


public:


   virtual void Fun() = 0;  


};




template <class T, class P>


Interface* MakeAdapter(const T& obj, const P& arg)


{


    int x;


   class Local : public Interface


   {


   public:


      Local(const T& obj, const P& arg)


         : obj_(obj), arg_(arg) {}


      virtual void Fun()


      {


          x = 100;


         obj_.Call(arg_);


      }


   private:


      T obj_;


      P arg_;


   };


   return new Local(obj, arg);


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: