在我的程序中,我有3个类:GeneralHeader,MACHeader和IPHeader。MAC和IP标头是从General_Header派生的:
//Headers.h
class GeneralHeader {
public:
bool Valid;
void PrintMe();
};
struct MACHeader: public GeneralHeader {
int DestMAC:48;
void PrintMe();
};
struct IPHeader: public GeneralHeader {
int Version;
void PrintMe();
};
我想实现GenedralHeader的PrintMe()打印所有成员,然后扩展的PrintMe()方法MACHeader打印也MACHeader成员(所以MACHeader.PrintMe()将同时打印GeneralHeader和MACHeader成员)。与IPHeader相同-IPHeader.PrintMe()将打印GeneralHeader和IPHeader成员。
在E语言(AOP)中,可以通过使用“也”来扩展MACHeader和IPHeader中的PrintMe()方法来轻松完成。
您能否指导我如何在C ++中实现它?
非常感谢您的帮助
你想要的是调用PrintMe
父类的方法,GeneralHeader
从PrintMe
方法IPHeader
和MACHeader
。这可以通过在方法调用之前加上父类来完成。例子:
void IPHeader::PrintMe(){
GeneralHeader::PrintMe(); //Call the super method
std::cout << "Version: " << Version << std::endl; //Print IPHeader members
}
的方法MACHeader
是相似的。
如果您具有多态性,即您想PrintMe
通过超类的指针或引用来调用派生类的方法,例如:
GeneralHeader* h = new IPHeader();
h->PrintMe();
那么你应该在GeneralHeader
类中声明方法virtual
。否则,即使实际上是一个,在上述代码PrintMe
中GeneralHeader
也只会调用。如果使用C ++ 11,则可能要在派生类中声明方法,以确保它们确实重写了。h
IPHeader
override
GeneralHeader::PrintMe()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句