#include"frog.h"
#include<string.h>
float fWeight;
char acColor[10];
char *pColor;
void CFrog::Jump()
{
}
void CFrog::Eat()
{
}
void CFrog::Digest()
{
}
void CFrog::setWeight(float weight)
{
fWeight=weight;
}
void CFrog::setcolor(char *color)
{
//strcpy(acColor,color);
delete []pColor;
pColor=new char [strlen(color)+1];
memset(pColor,0,strlen(color)+1);
strcpy(pColor,color);
}
void CFrog::print()
{
// printf("重量=%f,颜色=%s\n",fWeight,acColor);//用的是类中已初始化的变量fWeight,acColor
printf("重量=%f,颜色=%s,%p\n",fWeight,pColor,pColor);//用的是类中已初始化的变量fWeight,acColor
}
//数据成员初始化,带参数的构造函数
CFrog::CFrog(float weight,char *color)
{
fWeight=weight;
// strcpy(acColor,color);
pColor=new char [strlen(color)+1];
memset(pColor,0,strlen(color)+1);
strcpy(pColor,color);
printf("调用了 普通 构造函数!\n");
}
//重载一个不带参数的构造函数
CFrog::CFrog()
{
fWeight=0;
pColor=new char [strlen("")+1];
memset(pColor,0,strlen("")+1);
strcpy(pColor,"");
// strcpy(acColor," ");
printf("调用了 默认 构造函数!\n");
}
CFrog::CFrog(CFrog &frog)//深拷贝,不仅是数据成员的复制,还要指针开辟空间,复制
{
fWeight=frog.fWeight;
pColor=new char [strlen(frog.pColor)+1];
memset(pColor,0,strlen(frog.pColor)+1);
strcpy(pColor,frog.pColor);
printf("调用了 拷贝 构造函数!\n");
}
//自己做一个与等号重载类似功能的函数作为替代
void CFrog::copy(CFrog &frog)
{
fWeight=frog.fWeight;
delete []pColor;
pColor=new char[strlen(frog.pColor)+1];
memset(pColor,0,strlen(frog.pColor)+1);
strcpy(pColor,frog.pColor);
}