在父类和子类中定义重载函数

来源:互联网 发布:js分享代码移动端 编辑:程序博客网 时间:2024/05/22 07:01

重载函数可以定义在全局或某个类中,其实不仅如此,重载还可以发生在父类和子类中。请看示例。

示例清单

#include "stdio.h"
#include "string.h"
class CMessage
{
public:
CMessage(){};
void ShowMessage(const char* Text ,const char* Caption)
{
printf("Message: Text=%s. Caption=%s/n",Text,Caption);
}
void ShowMessage(const char* Text ,unsigned int Type)
{
printf("Message: Text=%s. Type=%d/n",Text,Type);
}
void ShowMessage(const char* Text)
{
printf("Message: Text=%s/n",Text);
}
};
class COKMessage :public CMessage
{
public:
COKMessage(){};
void ShowMessage(const char* Text ,const char* Caption)
{
char TextForOK[40];
strcpy(TextForOK,"OK,");
strcat(TextForOK,Text);
CMessage::ShowMessage( TextForOK , Caption); 
}
void ShowMessage(const char* Text ,unsigned int Type)
{
char TextForOK[40];
strcpy(TextForOK,"OK,");
strcat(TextForOK,Text);
CMessage::ShowMessage(TextForOK , Type); 

}
void ShowMessage(const char* Text )
{
char TextForOK[40];
strcpy(TextForOK,"OK,");
strcat(TextForOK,Text);
CMessage::ShowMessage(TextForOK); 
}
};
int main()
{
COKMessage OKMessage;
OKMessage.ShowMessage("Welcom");
 OKMessage.CMessage::ShowMessage("Welcom");
 return 0;
}
程序输出结果: 
Message: Text=OK,Welcom
Message: Text=Welcom
子类与父类中存在同名的成员函数,称为重载。在上例中,子类与父类的3个成员函数不仅名称相同,声明也完全一致。
这种父子声明一致的重载,不可能通过参数类型或数量确定调用函数,而是通过在父类的成员函数前加T::进行区分(其中T为父类名),
如上例的CMessage::ShowMessage("Welcom")。