关于函数重载的问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 18:31:02
#include<iostream>
using namespace std;
class housepet
{public:
void speak(){cout<<"huh?";}
};
class dog:public housepet
{public:
void speak(){cout<<"woof\n";}
};
class cat:public housepet
{public:
void speak(){cout<<"meow\n";}
};
class bird:public housepet
{public:
void speak(){cout<<"chirp\n";}
};
void main()
{housepet *myhouse[3];
dog d;
cat c;
bird b;
d.speak();
c.speak();
b.speak();
myhouse[0]=&d;
myhouse[1]=&c;
myhouse[2]=&b;
for(int i=0;i<3;i++)
myhouse[i]->speak();
}
上面的几个speak()是函数重载吗?书上说重载函数必须有参数不同,那不是相悖吗

根据我所了解的专业知识来看,以上的几个speak()不是函数重载,因为函数重载是在同一个类中才会出现的情况。
书上说重载函数必须有参数不同,也就是说参数的个数或者是类型不同都是可以的哟!