提供一个例子显示重载虚函数可能出现的问题:
class Parent
{
public :
virtual int do_it(int v){
return v*v;
}
};
class Child:public Parent
{
public :
int do_it(int v,int av=20){
return v*av;
}
};
int main(int argc,char *argv[]){
Parent *p=new Child();
int i=p->do_it(3);
return 0;
}
当程序执行完了,i的值会是多少,有的人认为是60,然而结果是9.Child类定义的do_it实际上是do_it函数的一次重载而不是重写。在这个时候,参数的缺省值是没有作用的
class Parent
{
public :
virtual int do_it(int v){
return v*v;
}
};
class Child:public Parent
{
public :
int do_it(int v,int av=20){
return v*av;
}
};
int main(int argc,char *argv[]){
Parent *p=new Child();
int i=p->do_it(3);
return 0;
}
当程序执行完了,i的值会是多少,有的人认为是60,然而结果是9.Child类定义的do_it实际上是do_it函数的一次重载而不是重写。在这个时候,参数的缺省值是没有作用的