1. declare_dyncreate函数:declare_dyncreate函数是AxBasic/C++中一种定义类的函数,它用于创建并返回具有动态查询能力的对象HANDLE。该函数被AxBasic\C++应用程序调用,用于从AxBasic/C++对象层次结构中动态构造类对象。它采用一个参数,该参数必须是一个具有declare_struct结构的字符串,该字符串表示所要将定义的类的名称、其类型、每个字段的名称和类型等。
2. declare_struct函数:declare_struct函数也是AxBasic/C++中的一种定义类的函数,它可以将字符串中的相关信息解析出来,返回一个包含了AxBasic/C++对象层次结构的结构体。该函数用于将AxBasic/C++中的类、类型和字段(以及该类具备的功能)告知AxBasic\C++应用程序。它采用一个参数,该参数是一个字符串,表示要被定义的类和每个成员变量的名称及其类型。
一、declare_dyncreate:
声明_dyncreate是一种直接派生类的方法,它包括在派生类的继承声明(inheritance declarations)中。它允许程序员在声明_dyncreate之后,立即派生一个新的类而不用调用构造函数,就像调用已有类一样。这使得派生类更容易、更快地实例化,而不必具体定义其构造函数,以及其需要的参数、设置和处理步骤。

二、declare_dyncreate的功能:
1、实现无参构造:当程序员在声明的_dyncreate 类中,没有定义构造函数,则可以在派生类声明_dyncreate之后,立即实例化一个该类的新实例,而无需显式调用该类的构造函数;
2、实现有参构造:_dyncreate也可以实现有参构造,如: g_Obj=Foo::Create(arg1, arg2, ...)这样可以向构造函数传入参数,这里arg1, arg2, .....就是构造函数的参数,这样就可以对对象进行完整的构造和初始化了;
3.松耦合:declare_dyncreate的实现提供了一种松耦合的构造方式,在声明类的过程中并没有显示的调用构造函数,而是在调用派生类的Create方法时,再实现构造函数。
三、declare_dyncreate的实现原理:
1、构造:在声明_dyncreate之后,先把派生类的名字写入到字典(dictionary)中,形成DynCreate注册表,然后在程序的任何地方都可以通过调用Create()方法,直接实例化新类的新实例;

2、析构:当程序退出,析构函数将被调用,同时将系统中DynCreate注册表中创建的对象销毁;
3、使用declare_dyncreate:程序员只需要在声明派生类的继承声明(inheritance declarations)中,加上DECLARE_DYNCREATE这 头文件声明,就可以在任何地方调用Create()方法来派生一个新的类;
4、特点:declare_dyncreate提供了一种极具灵活性的派生类的方法,它不是第一次声明派生类时必须指定的,而是一种可以在任何时候使用的派生方法;
四、declare_dyncreate的优劣势:
优点:
1、派生类更容易更快地实例化;
2、可以使用无参或有参构造,版本之间兼容;
3、使用declare_dyncreate能方便程序员在任何地方直接派生一个新的类而不用调用构造函数;
4、提供了一种极具灵活性的派生类的方法;
缺点:
1、为每个类创建增加了额外的析构函数;
2、如果declare_dyncreate函数的参数未定义,则可能会导致程序的不稳定;
3、在声明类的过程中,声明加载的类比较多且比较重,占用大量内存空间。







