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); }
是在类体内定义的又一个类。外面的类叫外围类。这个类以及由它创建的对象,都局限在外层类作用域中;
外界能否使用内层类,全在于访问权限;若能使用,定要以外围类::内层类格式来用;
是类组合演化的又一种类间关系,即组合或聚集成员不是产生于其它类,而是产生于内层类;内层类的成员函数,可以在类内实现,也可以在外层类之外实现;
内层类的成员函数对外围类的成员没有访问权,反之亦然
class A { public: class B { public: … private: … }; void f(); private: int a; }其中,类B是一个嵌套类,类A是外围类,类B定义在类A的类体内。
class A { public: void f(); private: int a; }; class B { public: … private: … };
原文:http://blog.csdn.net/u010236550/article/details/19117127