C ++:这个构造函数格式是什么意思?

时间:2013-08-18 08:01:07

标签: c++ c++11

我正在读c ++代码,我无法理解它的一部分。这是代码:

    BatteryBase.h

 00001 
00002 #ifndef __Battery_Base_H__
00003 #define __Battery_Base_H__
00004 
00005 #include "CommonIncludes.h"
00006 #include "cConsumer.h"
00007 #define SUCCESS 1
00008 #define FAIL 0
00009 #define BATTERY_OUT 2
00010 
00012 
00017 class BatteryBase : public cSimpleModule
00018 {
00019         protected:
00020                 double      m_Energy;
00021                 double      m_CurrentEnergy;
00022                 int         m_State;
00023                 cModule     *pCoOrdinator; 
00024                 cArray      ConsumerList;
00025                 simtime_t lastTimeOut; 
00026                 cMessage *batteryOut;
00027                 cConsumer *consumer;
00028 
00029         public:
00030                 Module_Class_Members(BatteryBase, cSimpleModule, 0); //constructo
00031                 
00032 
00034 
00036                 virtual double GetTotalEnergy(void) const;
.
.
.
00088                 virtual void handleMessage(cMessage *msg) = 0;
00089 
00091 
00094                 virtual int RegisterCoordinator(void);
00095 };
00096 
00097 #endif // __Battery_Base_H__

我无法理解第32行的含义。为什么BatteryBase类构造函数使用BatteryBase类作为参数? 你能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

Module_Class_Members(BatteryBase, cSimpleModule, 0); //constructor

这不是class的构造函数。 class的构造函数类似于:

BatteryBase() {}

Module_Class_Members是一个MACRO,它帮助开发人员为他的类创建一个默认构造函数。在您的情况下,它会创建一个看起来像这样的构造函数:

BaseClass() : cSimpleModule() {}

但正如文档中所述,该宏已弃用,您应该将其替换为:

public:
    BaseClass() : cSimpleModule() {}

答案 1 :(得分:0)

它是一个调用构造函数并设置继承关系的宏。 Module_Class_Members(BatteryBase, cSimpleModule, 0)。这意味着类BatteryBase派生自cSimpleModule,它是一个抽象类,为任何模块提供基本功能。会再给你一个例子。例如,

class MyDerivedModule : public MyModule
{

Module_Class_Members (MyDerivedModule,MyModule, 0);    
// and again user-specific methods
// follow
};` 

希望它能回答你的问题。