先看代码:
.h文件
#ifndef _0520001_H
#define _0520001_H
#include<iostream>
class base
{
public:
virtual void prt(int tmp = 1);
};
class sub : public base
{
public:
virtual void prt(int subtmp = 2);
};
#endif
.cpp文件
#include "0520001.h"
using namespace std;
void base::prt(int tmp)
{
cout<<"base is "<<tmp<<endl;
}
void sub::prt(int subtmp)
{
cout<<"sub is "<<subtmp<<endl;
}
int main()
{
base* ba = new sub;
ba->prt();
return 0;
}
结果:
sub is 1
说明:也许你会好奇为啥结果不是:sub is 2 呢?
原来参数不是动态绑定的,而是根据调用者的类型决定。所以虚函数调用的是子类的方法,但是(参数或者)默认的参数使用的是调用者的,也就是基类的。