同学之路——在路上

专业交流

导航

虚函数的默认参数

FROM CSDN:

#include <iostream>
using   namespace   std;

class   base
{
public:
 base(){}
 virtual   int   foo(int   ival=10)
 {
  int   real_default_value=1024;
  if(ival==10)
  ival=real_default_value;
  cout <<"base::foo()---ival: "<<ival <<endl;
  return   ival;
 }
};

class   derived:public   base
{
public:
 derived(){}
 virtual   int   foo(int   ival=5)
 {
  int   real_default_value=2048;
  if(ival==5)
   ival=real_default_value;
  cout <<"derived::foo()---ival: "<<ival <<endl;
  return   ival;
 }
};

int   main()
{
 derived   *pd=new   derived;
 base   *pb=pd;
 int   val=pb-> foo();
 cout <<"main() : val through base: " <<val <<endl;

 val=pd-> foo();

 cout <<"main() : val thruough derived: " <<val <<endl;
 return 0;
}


output on the screen:

derived::foo()---ival: 10
main() : val through base: 10
derived::foo()---ival: 2048
main() : val thruough derived: 2048

为什么会造成这个结果呢?

posted on 2007-12-03 23:58  Camellia  阅读(645)  评论(3编辑  收藏  举报