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

2013-10-07 00:17:49 · 作者: · 浏览: 58

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

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

示例清单1.3

#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")。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节