阅读以下代码,输出结果:
#include <iostream>
using namespace std;
class A
{
public:
virtual void func(int num = 10)
{
cout << "num = "<< num << endl;
}
};
class B : public A
{
public:
virtual void func(int num = 20)
{
cout << "num = " << num << endl;
}
};
int main()
{
B b;
A &a = b;
a.func(); /* 这里是动态绑定,访问的是B类的func函数
但是,默认实参却是在编译阶段就确定的,编译的时候只知道a是类型A的引用 */
}
因此,输出结果是num = 10.