Geant4中 set mandatory user action classes建立新的对象形式

参考C++中default constructor 的用法:http://www.cplusplus.com/doc/tutorial/classes2/

 constructor是类的一个特殊成员函数,这个函数的函数标识符与类的标识符一样,且无返回值类型,当创建一个类的对象的时候,constructor函数在对象的创建时就被执行。

一个default constructor不带有任何参数,但可以给constructor定义参数,这些参数在类对象的创建时将被初始化。

 

Geant的main()函数中 set mandatory user action classes创建类的对象时要参考类中是否定义了default constructor,若在类中没有constructor构建函数,那么在类中将默认创建一个constructor函数,且该函数成员没有参数,此时在类外面创建该类的对象时不能带有参数,即不能在对象后面加括号,当类中采用了constructor构建函数时,且该函数带有参数,那么创建该类的对象时需要加括号,如下图

Geant4中 set mandatory user action classes建立新的对象形式

 

在main()函数中

DetectorConstruction*   det=new DetectorConstruction();

PhysicsList*            phys = new PhysicsList();

都采用了函数对象来申明,这是因为在DetectorConstruction.hh头文件和PhysicsList.hh头文件中定义相应的DetectorConstruction类和PhysicsList类时采用了C++中类成员的constructor函数构造方法并构造了相应的DetectorConstruction(),PhysicsList()类成员,见下图,因此在类创建类的对象初始化时应采用函数形式,即加括号。

Geant4中 set mandatory user action classes建立新的对象形式Geant4中 set mandatory user action classes建立新的对象形式