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

C++: what does this constructor format mean?

本文关键字:格式 是什么 意思 构造函数 C++      更新时间:2023-10-16

我正在阅读一个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 类作为参数?请问你帮我吗?

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

这不是您的class的构造函数。class的构造函数如下所示:

BatteryBase() {}

Module_Class_Members是一个宏,它帮助开发人员为他的类创建一个默认构造函数。在您的情况下,它创建一个构造函数,该构造函数应如下所示:

BaseClass() : cSimpleModule() {}

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

public:
    BaseClass() : cSimpleModule() {}

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

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

希望它能回答你的问题。