local class

    技术2025-09-13  83

     

    局部类的属性:1.不能具有静态数据成员。2.局部类的所有成员函数都必须在它们的类定义中定义。3.模板函数的局部类能使用模板参数的类型 
    局部类的应用:1.隐藏实现细节 如果客户得到一个包含gettime() 函数的二进制文件,那么他只能看到gettime() 函数的原型,而不能看到它是如何实现的。通过定义局部类,你可以在不暴露底层实现的情况下发布二进制文件和函数原型。2.局部类作为辅助对象(helper object) 所谓辅助对象,是指执行非常具体的操作的特定类的实例,比如执行计算、转换等操作,这类非常具体的操作只在某一地方才必要。3.注意除了局部类之外,还可以定义局部结构体(struct)、局部联合(union)和局部枚举(enum)等类型。 

    MCD 中的例子

    class Interface { public: virtual void Fun() = 0; ... }; template <class T, class P> Interface* MakeAdapter(const T& obj, const P& arg) { class Local : public Interface { public: Local(const T& obj, const P& arg) : obj_(obj), arg_(arg) {} virtual void Fun() { obj_.Call(arg_); } private: T obj_; P arg_; }; return new Local(obj, arg); }  

     

    最新回复(0)